A comprehensive Minecraft Spigot plugin for managing screenshare sessions with advanced freeze functionality, staff controls, and administrative tools.
- Features
- Installation
- Commands
- Permissions
- Configuration
- Usage Guide
- Custom World Setup
- API Documentation
- Contributing
- License
- Screenshare Sessions: Create isolated screenshare environments with custom worlds
- Player Freeze System: Comprehensive freeze functionality with movement, command, and inventory restrictions
- Staff Interface: Interactive clickable buttons for quick actions during screenshare
- Real-time Scoreboard: Live session information display for both staff and suspects
- Custom Spawn Points: Set specific spawn locations for staff and suspects in screenshare world
- Temporary Ban System: Time-based banning with flexible duration formats
- Ban Information: Detailed ban status and history lookup
- Duplicate IP Detection: Find accounts sharing the same IP address
- Chat Isolation: Separate chat channels during screenshare sessions
- Session Logging: Comprehensive logging of all plugin activities
- Custom World Support: Use your own pre-built screenshare worlds
- Automatic World Management: Creates flat worlds if no custom world is provided
- Player Reconnection Handling: Maintains freeze status across disconnections
- Staff Controls Interface: Quick-action buttons for common screenshare outcomes
- IP Tracking: Automatic IP logging for duplicate account detection
- Minecraft Server: Spigot/Paper 1.20+
- Java Version: 17 or higher
- Dependencies: None (standalone plugin)
-
Download the Plugin
Download from releases
-
Install the Plugin
Copy to your server's plugins directory -
Start Your Server
# The plugin will generate default configuration files java -jar spigot-1.20.4.jar -
Configure Permissions
- Grant appropriate permissions to staff members
- See Permissions section for details
| Command | Description | Permission | Usage |
|---|---|---|---|
/ss <player> |
Start a screenshare session | screenshare.use |
/ss PlayerName |
/ss end <player> |
End a screenshare session | screenshare.use |
/ss end PlayerName |
/freeze <player> |
Freeze/unfreeze a player | screenshare.freeze |
/freeze PlayerName |
/tempban <player> <time> <reason> [-s] |
Temporarily ban a player | screenshare.tempban |
/tempban PlayerName 30d Cheating -s |
| Command | Description | Permission | Usage |
|---|---|---|---|
/baninfo <player> |
View detailed ban information | screenshare.baninfo |
/baninfo PlayerName |
/dupeip <player> |
Check for duplicate IP addresses | screenshare.dupeip |
/dupeip PlayerName |
/ssspawn <option> |
Manage screenshare spawn points | screenshare.setspawn |
/ssspawn staff |
| Command | Description |
|---|---|
/ssspawn staff |
Set staff spawn location |
/ssspawn target |
Set suspect spawn location |
/ssspawn both |
Set both spawns to current location |
/ssspawn info |
Show current spawn locations |
/ssspawn reset |
Reset all spawns to world spawn |
| Format | Description | Example |
|---|---|---|
1m |
Minutes | 30m = 30 minutes |
1h |
Hours | 2h = 2 hours |
1d |
Days | 7d = 7 days |
1w |
Weeks | 2w = 2 weeks |
screenshare.use:
description: Start and end screenshare sessions
default: op
screenshare.freeze:
description: Freeze and unfreeze players
default: op
screenshare.tempban:
description: Temporarily ban players
default: op
screenshare.setspawn:
description: Set spawn locations in screenshare world
default: op
screenshare.baninfo:
description: View detailed ban information
default: op
screenshare.dupeip:
description: Check for duplicate IP addresses
default: opscreenshare.tempban.exempt:
description: Immunity to temporary bans
default: false
screenshare.tempban.notify:
description: Receive tempban notifications
default: op
screenshare.*:
description: All screenshare permissions
default: opLuckPerms:
# Grant all screenshare permissions to moderators
lp group moderator permission set screenshare.*
# Grant specific permissions
lp user PlayerName permission set screenshare.use
lp user PlayerName permission set screenshare.freeze
# Make a player exempt from tempbans
lp user VIPPlayer permission set screenshare.tempban.exemptPermissionsEx:
groups:
moderator:
permissions:
- screenshare.*
admin:
permissions:
- screenshare.*
- screenshare.tempban.exemptThe plugin generates a comprehensive configuration file with the following sections:
plugin:
prefix: "&6[ScreenShare] &r"
world:
name: "screenshare_world"
type: "FLAT"
difficulty: "PEACEFUL"
pvp: false
time: 6000
weather: false
mob_spawning: falseAll messages are fully customizable with color code support:
messages:
screenshare:
session_started_staff: "&aScreenshare session started with {player}"
session_started_suspect: "&eYou were taken to screenshare by {staff}"
do_not_disconnect: "&c&lDO NOT DISCONNECT or you will be banned!"scoreboard:
title: "&6▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"
header: "&6┃ &l&6SCREENSHARE INFO &6┃"
duration: "&e⏰ Duration: &f{duration}"
staff_controls: "&6📋 STAFF CONTROLS:"Custom spawn locations are stored separately:
staff-spawn:
world: screenshare_world
x: 0.0
y: 64.0
z: 0.0
yaw: 0.0
pitch: 0.0
target-spawn:
world: screenshare_world
x: 10.0
y: 64.0
z: 0.0
yaw: 180.0
pitch: 0.0-
Initiate Session
/ss SuspiciousPlayer -
What Happens:
- Both players are teleported to the screenshare world
- Suspect is put in Adventure mode
- Real-time scoreboard appears for both players
- Staff receives interactive control interface
- Chat is isolated between staff and suspect
-
Staff Interface
[CHEATING]- 30-day ban for cheating[ADMITTING]- 15-day ban for admission[CLEAR]- End the session (player is clean)[FREEZE]- Freeze/unfreeze the suspect
-
Freeze a Player
/freeze PlayerName -
Freeze Effects:
- Cannot move (position locked)
- Cannot use most commands
- Receives periodic reminders
-
Automatic Handling:
- Freeze status persists through disconnections
- Automatic unfreezing when session ends
-
Basic Tempban
/tempban PlayerName 7d Cheating -
Silent Tempban
/tempban PlayerName 30d Hacking -s -
Check Ban Information
/baninfo PlayerName
-
Enter Screenshare World
/ss AnyPlayer -
Set Spawn Locations
/ssspawn staff # Set staff spawn to current location /ssspawn target # Set suspect spawn to current location /ssspawn both # Set both spawns to current location -
View Current Settings
/ssspawn info
-
Create Your World
- Build your screenshare world in single-player or with WorldEdit
- Design it with appropriate spawn areas for staff and suspects
-
Install Custom World
# Copy your world folder to the plugin directory cp -r YourWorldFolder /server/plugins/ScreenShare/screenshare_world/ -
Restart Server
- The plugin will automatically detect and load your custom world
- If no custom world is found, a flat world will be generated
-
Set Custom Spawns
/ss player # Enter the world /ssspawn staff # Set staff spawn /ssspawn target # Set suspect spawn
- World Name: Must be named
screenshare_worldin the plugin folder - Spawn Areas: Should have designated areas for staff and suspects
- Size: Keep it reasonably small for better performance
ScreenSharePlugin plugin = (ScreenSharePlugin) Bukkit.getPluginManager().getPlugin("ScreenShare");// Check if player is in session
boolean inSession = plugin.getSessionManager().isInSession(player);
// Get session information
ScreenShareSession session = plugin.getSessionManager().getSession(player);
// Start a session programmatically
boolean success = plugin.getSessionManager().startSession(suspect, staff);
// End a session
boolean ended = plugin.getSessionManager().endSession(suspect);// Freeze a player
plugin.getFreezeManager().freezePlayer(player);
// Unfreeze a player
plugin.getFreezeManager().unfreezePlayer(player);
// Check freeze status
boolean frozen = plugin.getFreezeManager().isFrozen(player);// Get screenshare world
World ssWorld = plugin.getWorldManager().getScreenShareWorld();
// Check if world is screenshare world
boolean isSSWorld = plugin.getWorldManager().isScreenShareWorld(world);
// Get spawn locations
Location staffSpawn = plugin.getWorldManager().getStaffSpawn();
Location targetSpawn = plugin.getWorldManager().getTargetSpawn();The plugin fires custom events that other plugins can listen to:
// Session start event
@EventHandler
public void onSessionStart(ScreenShareSessionStartEvent event) {
Player suspect = event.getSuspect();
Player staff = event.getStaff();
// Handle session start
}
// Session end event
@EventHandler
public void onSessionEnd(ScreenShareSessionEndEvent event) {
Player suspect = event.getSuspect();
// Handle session end
}We welcome contributions! Please see CONTRIBUTING.md for detailed guidelines.
-
Fork the Repository
git clone https://github.com/MircoAPPP/BetterSS.git cd screenshare-plugin -
Set Up Development Environment
# Ensure you have Java 17+ and Gradle ./gradlew build -
Make Your Changes
- Follow the existing code style
- Add tests for new features
- Update documentation
-
Submit Pull Request
- Create a feature branch
- Make your changes
- Submit a pull request with detailed description
# Clone the repository
git clone https://github.com/MircoAPPP/BetterSS.git
cd screenshare-plugin
# Build the plugin
./gradlew build
# The compiled JAR will be in build/libs/
ls build/libs/screenshare-*.jar- Initial release
- Core screenshare functionality
- Freeze system implementation
- Temporary ban system
- Custom world support
- Staff interface with clickable buttons
- Comprehensive configuration system
Please report bugs using the GitHub Issues page.
Include:
- Server version (Spigot/Paper)
- Plugin version
- Java version
- Detailed description of the issue
- Steps to reproduce
- Any error messages from console
- Discord: Coming soon
- GitHub Issues: Report bugs or request features
This project is licensed under the MIT License - see the LICENSE file for details.
- Spigot Team - For the excellent server software
- Contributors - Everyone who has contributed to this project
- Community - For feedback and suggestions
Author: Scalamobile
Version: 1.0.0
Last Updated: 2025