SG: Reborn is a plugin that challenges each player to survive as long as he can and be the last man standing! Survival Games is a predecessor of the famous Battle Royale genre! This gamemode includes looting chests and gaining advantages on others! You can also find a teammate to have an easier time winning, but remember there's only one winner. So watch your back!
SG: Reborn completely revamps old SG systems and makes them better! Therefore the name SG: Reborn!
SG: Reborn currently only supports Bungeecord network. Meaning multi-arena DOESN'T work. This plugin is pretty complex with map voting systems and arena pre-loadings. Multi-arena requires ton of work and recoding. If it's heavily requested and the plugin generates certain revenue I will add it. But for now the plugin is purely multi-server!
It's is heavily suggested to install Vault, PlaceholderAPI and ProtocolLib on your server as dependencies. Also installing Decent Holograms allows you to have Chest Holograms.
You're required to use MongoDB to use stats, leaderboards, achievements, boosters, etc...
Java 17+! Java 8 is not longer supported!
SG: Reborn is a plugin originally bought from a previous developer with resell rights and redeveloped for my previous SG Network. That was almost 3 years ago. Since I now own a different network with different systems that aren't SG oriented I have decided to sell the plugin on SpigotMC. SG: Reborn is probably the best and most complete SG plugin ever made for SpigotMC since it has Survival Games, Clan War, Tournament and Private Games systems built in it. This is the best plugin to create a SG based gamemode for SG & CW players. SG: Reborn will be compatible with all plugins on your server. You may edit the plugin to your liking. Also all future updates are included in the product and issues will be fixed as soon as possible. If you have encountered an issue please don't leave a negative review, but first either join our
discord support server or PM me on SpigotMC or just simply leave your issue under resource discussion!
Ability to Manage 3 SG Based Game Modes (Survival Games, Clan Wars and Tournaments for SG or CW)
Custom Items that can be used in chests. Care package (can be used by adding ci-carepackage to chests.yml) Golden Head (can be used by adding ci-goldenhead to chests.yml) Selection Chest (can be used by adding ci-selectionchest to chests.yml)
Graves system
Boss system (Happens on chest refill)
Air Drop system with interactive user experience!
Waiting Lobby Practice (Looting, crafting, PvP)
Custom image display to winner when game finishes!
Rank system (badlion style)
Boosters system (Global and Personal boosters that can stack together) in a nice interactive GUI.
Achievements system (Showcases nicely in the interactive book, can be extended with an API)
Fast and optimized Leaderboards GUI System based on MMR, EXP & Wins.
Info Command which displays server information.
Skip already played maps, special map mool with priorities (can be selected with command or in maps.yml).
Universal folder for maps which can be accessed by multiple servers. You can modify it in config
You can request your server to be added here!
----------------------------------------------------------------------------------------------
astralnetwork.com | Astral Network
play.kyodo.network | Kyodo Network [Modified SRC]
seiky.net | Seiky Network
Code (Java):
publicclass SGRebornAPI
{
/** * Gets the name of the current segment */ publicstaticString getSegment
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null|| manager.
getSegment()==null){ return"Segment not available"; } return manager.
getSegment().
getName(); }
/** * Gets the name of the current map */ publicstaticString getMapName
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null|| manager.
getMap()==null){ return"Not chosen yet"; } return manager.
getMap().
getName(); }
/** * Gets the formatted name of the current map */ publicstaticString getMapFormattedName
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null|| manager.
getMap()==null){ return"Not chosen yet"; } return manager.
getMap().
getFormattedName(); }
/** * Gets match duration (seconds) */ publicstaticint getDuration
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ return0;// default value if MatchManager is unavailable } return manager.
getSeconds(); }
/** * Gets the number of alive players */ publicstaticint getAlivePlayerCount
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null|| manager.
getAlives()==null){ return0; } return manager.
getAlives().
size(); }
/** * Gets the list of spectators */ publicstatic List
<UUID
> getSpectators
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ returnnew ArrayList
<>(); } return manager.
getSpectators(); }
/** * Gets the number of spectators */ publicstaticint getSpectatorCount
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null|| manager.
getSpectators()==null){ return0; } return manager.
getSpectators().
size(); }
/** * Gets the list of players who have played */ publicstatic List
<UUID
> getPlayersPlayed
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ returnnew ArrayList
<>(); } return manager.
getPlayersPlayed(); }
/** * Gets the match winner (team) */ publicstatic Team getWinner
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ returnnull; } return manager.
getWinner(); }
/** * Gets the current grace period duration */ publicstaticint getGraceDuration
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ return-1; } return manager.
getGrace(); }
/** * Gets the current time left in the match */ publicstaticint getTimeLeft
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ return-1; } return manager.
getTime(); }
/** * Gets the current chest refill status */ publicstaticint getChestRefillStatus
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ return0; } return manager.
getChest(); }
/** * Gets the current health status of the match (player health) */ publicstaticint getHealthStatus
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ return20; } return manager.
getHealth(); }
/** * Checks if Flint and Steel (fns) is enabled */ publicstaticboolean isFnsEnabled
(){ MatchManager manager
= MatchManager.
getInstance(); if(manager
==null){ returnfalse; } return manager.
getFns(); }
/** * Checks if the air drop system is active */ publicstaticboolean isAirDropActive
(){ AirDropManager airDropManager
= AirDropManager.
getInstance(); return airDropManager
!=null&& Config.
getBoolean(Config.
AIRDROP_SYSTEM); }
/** * Gets the location of the most recent air drop */ publicstatic Location getRecentAirDropLocation
(){ AirDropManager airDropManager
= AirDropManager.
getInstance(); if(airDropManager
!=null&&!airDropManager.
getAirdrops().
isEmpty()){ // Retrieve the most recent airdrop location return airDropManager.
getAirdrops().
keySet().
stream().
findFirst().
orElse(null); } returnnull; }
/** * Checks if the air drop has fallen at the given location */ publicstaticboolean hasAirDropFallen
(Location location
){ AirDropManager airDropManager
= AirDropManager.
getInstance(); if(airDropManager
!=null){ return airDropManager.
getAirDropFallen().
getOrDefault(location,
false); } returnfalse; }
/** * Gets the progress of the air drop opening at the given location */ publicstaticint getAirDropProgress
(Location location
){ AirDropManager airDropManager
= AirDropManager.
getInstance(); if(airDropManager
!=null){ return airDropManager.
getAirDropProgress().
getOrDefault(location,
0); } return0; }
/** * Gets the remaining time until the next air drop */ publicstaticint getTimeUntilNextAirDrop
(){ AirDropManager airDropManager
= AirDropManager.
getInstance(); if(airDropManager
!=null){ return AirDropManager.
AIR_DROP_INTERVAL;// Time in seconds } return-1;// -1 indicates that the airdrop system is not active }
/** * Gets the remaining time until the next air drop */ publicstaticint getAirDropClickThreshold
(){ AirDropManager airDropManager
= AirDropManager.
getInstance(); if(airDropManager
!=null){ return AirDropManager.
CLICK_THRESHOLD;// Time in seconds } return-1; }
// API for Profiles
publicstatic Profile getProfile
(Player player
){ Profile profile
= ProfileManager.
getProfile(player.
getUniqueId()); if(profile
==null){ Bukkit.
getLogger().
log(Level.
SEVERE,
"SGReborn API - Profile not loaded."); returnnull; } return profile
; }
// INITIALIZE IN YOUR MAIN CLASS public CustomAchievementsExample
(SGReborn sgReborn
){ SGAchievementAPI.
registerAchievement(new CustomAchievementExample
()); }
/** Triggered when the game segment changes to deathmatch */ GameDeathmatchEvent
/** Triggered when a player or team wins the game */ GameWinEvent
/** Triggered when a player eliminates another player */ GameEliminationEvent
/** Triggered when the game starts */ GameStartEvent
/** Triggered when a player levels up */ PlayerLevelUpEvent
/** Triggered when a player completes a challenge */ ChallengeCompletionEvent
/** Triggered when a player starts a challenge */ ChallengeStartEvent
/** Triggered when a player gains experience points */ PlayerGainExpEvent
/** Triggered when a player opens a chest */ ChestLootEvent
/** Triggered when a player completes a quest */ QuestCompletionEvent
/** Triggered when the game's global state changes */ GameStateChangeEvent
More things will be added to the API!
PAPI PLACEHOLDERS:
Game Placeholders
%sgreborn_game_state% - Current game state.
%sgreborn_game_matchid% - Current match ID.
%sgreborn_game_duration_raw% - Raw game duration in seconds.
%sgreborn_game_duration_formatted% - Formatted game duration.
%sgreborn_game_map% - Name of the current map (or "Lobby").
%sgreborn_game_alive_players_int% - Number of alive players.
%sgreborn_game_spectator_players_int% - Number of spectators.
%sgreborn_game_spectator_players_list% - List of spectator names.
Leaderboard Placeholders
%sgreborn_leaderboard_<stat>_<rank>%
Example:
%sgreborn_leaderboard_kills_1% - Top player in kills.
%sgreborn_leaderboard_points_5% - 5th-ranked player in points.
Booster Placeholders
%sgreborn_boosters_total_active% - Total number of active boosters.
%sgreborn_boosters_points_total_boost% - Total points boost multiplier.
%sgreborn_boosters_exp_total_boost% - Total experience boost multiplier.
%sgreborn_boosters_players_list% - List of players with active boosters.
%sgreborn_boosters_expire_time_<index>% - Remaining time for a specific booster.
%sgreborn_boosters_active_summary% - Summary of all active boosters (e.g., type and amount).
Player Placeholders
General
%sgreborn_player_level% - Player's current level.
%sgreborn_player_level_display% - Displayed player level.
%sgreborn_player_level_display_nice% - Player level with formatted color.
Stats
%sgreborn_player_stat_<stat>% - Player’s stat value.
Examples:
%sgreborn_player_stat_sg_wins% - SG wins.
%sgreborn_player_stat_deaths% - Total deaths.
%sgreborn_player_stat_experience% - Experience earned.
%sgreborn_player_tempstat_<tempstat>% - Player’s temporary stat value.
Examples:
%sgreborn_player_tempstat_kills% - Temporary kills stat.
%sgreborn_player_tempstat_chests% - Temporary chests stat.
Settings
%sgreborn_player_setting_<setting>% - Status of a specific player setting (Enabled/Disabled).
Examples:
%sgreborn_player_setting_scoreboard% - Scoreboard visibility setting.
%sgreborn_player_setting_spectator_speed% - Spectator speed setting.
Other Player-Specific Stats
%sgreborn_player_mmr_rank% - Player’s MMR rank.
%sgreborn_player_total_kdr% - Player’s Kill/Death ratio.
%sgreborn_player_current_kit% - Player’s currently selected kit.
%sgreborn_player_real_displayname% - Player’s real display name.
%sgreborn_player_damage_amount% - Total damage dealt by the player.
%sgreborn_player_winrate% - Player’s win rate as a percentage.
%sgreborn_player_chests% - Number of chests opened.
%sgreborn_player_team% - Name of the player’s team.
%sgreborn_player_team_color% - Player’s team color.
%sgreborn_player_team_fakecolor% - Player’s team fake color.
Personal Booster Placeholders
%sgreborn_player_credit_booster_amount% - Player's active credit booster multiplier.
%sgreborn_player_exp_booster_amount% - Player's active experience booster multiplier.
%sgreborn_player_credit_booster_time% - Remaining time for the player's credit booster.
%sgreborn_player_exp_booster_time% - Remaining time for the player's experience booster.
Redistribution of this plugin to other individuals, networks, or websites is strictly prohibited.
This plugin is licensed for use exclusively on your server or network.
Please refrain from leaving unconstructive reviews, such as complaints about missing features or updates not meeting your requests. The plugin's features are clearly listed on the main page, so you are fully informed before purchasing.
Refunds are not available.
While I strive to provide updates, they will be released as my schedule permits. Please understand that I have other commitments outside of this project.