{"id":78401,"date":"2026-06-04T15:29:12","date_gmt":"2026-06-04T12:29:12","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/"},"modified":"2026-06-04T15:29:12","modified_gmt":"2026-06-04T12:29:12","slug":"guestviewer","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/","title":{"rendered":"GuestViewer"},"content":{"rendered":"<p># GuestViewer<\/p>\n<p>A Minecraft plugin that restricts non-whitelisted players to spectator mode with movement limitations.<\/p>\n<p>![Build Status](https:\/\/github.com\/nfacha\/GuestViewer\/actions\/workflows\/build.yml\/badge.svg)<\/p>\n<p>## Download<\/p>\n<p>### Stable Version<br \/>\n**Download Latest Stable Version**<\/p>\n<p>### Bleeding Edge Version<br \/>\n**Download Latest Bleeding Edge Version**<br \/>\n\u26a0\ufe0f You will need to be logged into GitHub to download artifacts from GitHub Actions.<\/p>\n<p>## Server Compatibility<\/p>\n<p>&#8211; Tested and working on Minecraft 1.21.x<br \/>\n&#8211; Should work on Paper\/Spigot servers<\/p>\n<p>## Features<\/p>\n<p>&#8211; Permission-based whitelist system &#8211; players without the `guestviewer.bypass` permission are automatically set to spectator mode<br \/>\n&#8211; Players with the `guestviewer.bypass` permission are automatically set to survival mode<br \/>\n&#8211; Spectators can only move within 100 blocks of the player they&#8217;re spectating<br \/>\n&#8211; Permission-based free roaming near world spawn (`guestviewer.freeroam`)<br \/>\n&#8211; Chat restriction for spectators unless they have the `guestviewer.chat` permission<br \/>\n&#8211; Configurable welcome messages for both regular players and spectators<br \/>\n&#8211; Configurable join\/leave broadcast messages for both regular players and spectators<br \/>\n&#8211; Simple and lightweight<\/p>\n<p>## Installation<\/p>\n<p>1. Download the latest release from the link above<br \/>\n2. Place the JAR file in your server&#8217;s `plugins` directory<br \/>\n3. Restart your server or run `\/reload`<br \/>\n4. Configure the plugin as needed (see Configuration section)<\/p>\n<p>## Usage<\/p>\n<p>### Permissions<\/p>\n<p>&#8211; `guestviewer.bypass` &#8211; Players with this permission play normally (default: op)<br \/>\n&#8211; `guestviewer.admin` &#8211; Required to use admin commands like reload (default: op)<br \/>\n&#8211; `guestviewer.freeroam` &#8211; Allows spectators to roam freely within the configured distance of world spawn (default: false)<br \/>\n&#8211; `guestviewer.chat` &#8211; Allows spectators to use the chat (default: false)<\/p>\n<p>### Commands<\/p>\n<p>&#8211; `\/guestviewer` or `\/gview` &#8211; Displays plugin info<br \/>\n&#8211; `\/guestviewer reload` or `\/gview reload` &#8211; Reloads the plugin configuration<\/p>\n<p>## Configuration<\/p>\n<p>The plugin&#8217;s configuration is stored in `plugins\/GuestViewer\/config.yml`:<\/p>\n<p>&#8220;`yaml<br \/>\n# Maximum distance (in blocks) a spectator can move from their target<br \/>\nmax-distance: 100<\/p>\n<p># Messages<br \/>\nmessages:<br \/>\n  # Message shown to players when they join and are set to spectator mode<br \/>\n  spectator-join: &#8220;&#038;cYou are not whitelisted! You have been set to spectator mode.&#8221;<\/p>\n<p>  # Message shown to players when they join and have the bypass permission<br \/>\n  player-join: &#8220;&#038;aWelcome back! You are playing in survival mode.&#8221;<\/p>\n<p>  # Message shown when a spectator tries to move beyond the max distance<br \/>\n  distance-warning: &#8220;&#038;cYou cannot move more than 100 blocks from the player you are spectating!&#8221;<\/p>\n<p>  # Message shown when a spectator without chat permission tries to chat<br \/>\n  chat-restricted: &#8220;&#038;cYou don&#8217;t have permission to chat. You are in spectator mode.&#8221;<\/p>\n<p># Chat settings<br \/>\nchat:<br \/>\n  # Whether to restrict chat for spectators without permission<br \/>\n  restrict-spectator-chat: true<\/p>\n<p># Broadcast notifications<br \/>\nbroadcast:<br \/>\n  # Whether to broadcast when a player with bypass permission joins<br \/>\n  player-join-enabled: true<br \/>\n  player-join-message: &#8220;&#038;e%player% &#038;ahas joined the server.&#8221;<\/p>\n<p>  # Whether to broadcast when a player with bypass permission leaves<br \/>\n  player-quit-enabled: true<br \/>\n  player-quit-message: &#8220;&#038;e%player% &#038;chas left the server.&#8221;<\/p>\n<p>  # Whether to broadcast when a spectator joins<br \/>\n  spectator-join-enabled: true<br \/>\n  spectator-join-message: &#8220;&#038;7Guest &#038;e%player% &#038;7has joined as a spectator.&#8221;<\/p>\n<p>  # Whether to broadcast when a spectator leaves<br \/>\n  spectator-quit-enabled: true<br \/>\n  spectator-quit-message: &#8220;&#038;7Guest &#038;e%player% &#038;7has left the server.&#8221;<br \/>\n&#8220;`<\/p>\n<p>## How it Works<\/p>\n<p>1. When a player joins, the plugin checks if they have the `guestviewer.bypass` permission<br \/>\n2. If they have the permission, they&#8217;re set to survival mode<br \/>\n3. If they don&#8217;t have the permission, they&#8217;re set to spectator mode<br \/>\n4. Spectators are restricted to a 100-block radius (configurable) around the player they&#8217;re spectating<br \/>\n5. Spectators with the `guestviewer.freeroam` permission can move within the configured radius of world spawn<br \/>\n6. Spectators without the `guestviewer.chat` permission cannot use the chat<br \/>\n7. If they try to move beyond allowed boundaries, they&#8217;re teleported back<\/p>\n<p>## Support<\/p>\n<p>If you encounter any issues or have suggestions, please open an issue on the GitHub repository.<\/p>\n<p>## License<\/p>\n<p>This plugin is released under the MIT License.<\/p>\n<p>## Development<\/p>\n<p>### Building from Source<\/p>\n<p>The project uses Maven for build automation. To build from source:<\/p>\n<p>&#8220;`bash<br \/>\nmvn clean package<br \/>\n&#8220;`<\/p>\n<p>The built jar file will be in the `target` directory.<\/p>\n<p>### Continuous Integration<\/p>\n<p>This project uses GitHub Actions to automatically build the plugin. The workflow:<br \/>\n&#8211; Builds the plugin on every push and pull request to main\/master branches<br \/>\n&#8211; Uses JDK 21 for compilation<br \/>\n&#8211; Creates artifacts that can be downloaded from the Actions tab <\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Better Alternative to Whitelist<\/p>\n","protected":false},"featured_media":78402,"template":"","meta":{"_minecraft_slug":"guestviewer","_minecraft_project_id":"kh01mGtM","_minecraft_author":"Facha","_minecraft_license":"MIT","_minecraft_downloads":41,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"guestviewer.zip","_minecraft_size_bytes":11069,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-15T21:35:44.495166Z","_minecraft_date_created":"2025-04-21T20:03:23.536805Z","_minecraft_date_modified":"2025-04-19T16:11:37.616055Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/guestviewer","_minecraft_icon_attachment_id":78402,"_minecraft_imported_at":"2026-06-04T12:29:14+00:00","_minecraft_import_hash":"84360ff5ff6da3af5e7278981ab0ee88","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[124,127,128,129],"mod_loader":[130,132,133,134],"minecraft_version":[62,37,73,74,38,78],"class_list":["post-78401","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-bukkit","mod_category-paper","mod_category-purpur","mod_category-spigot","mod_loader-bukkit","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GuestViewer - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GuestViewer - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A Better Alternative to Whitelist\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/\",\"name\":\"GuestViewer - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/guestviewer-icon-1fa6577cf45b7d582a52eed45da0f43b33d8cbad_96.webp\",\"datePublished\":\"2026-06-04T12:29:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/guestviewer-icon-1fa6577cf45b7d582a52eed45da0f43b33d8cbad_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/guestviewer-icon-1fa6577cf45b7d582a52eed45da0f43b33d8cbad_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/guestviewer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GuestViewer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GuestViewer - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/","og_locale":"en_US","og_type":"article","og_title":"GuestViewer - Minecraft","og_description":"A Better Alternative to Whitelist","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/","name":"GuestViewer - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/guestviewer-icon-1fa6577cf45b7d582a52eed45da0f43b33d8cbad_96.webp","datePublished":"2026-06-04T12:29:12+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/guestviewer-icon-1fa6577cf45b7d582a52eed45da0f43b33d8cbad_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/guestviewer-icon-1fa6577cf45b7d582a52eed45da0f43b33d8cbad_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/guestviewer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"GuestViewer"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/78401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/78402"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=78401"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=78401"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=78401"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=78401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}