Resource icon
Tested Minecraft Versions:
Bugs
I can't fix problems if I don't find them! If you have any issues, report via discussion or private message. Do not use the rating area to report bugs or request features. Please go to discussion.
Dependencies
To work with Leaderboards you can add Holographic Displays.
NBS Music
You can play custom Note Block Studio songs! You need NoteBlockAPI for this.
Arena setup
Required permission: sr.admin
First of all set global spawn using /sr setgspawn
Sign format:
Leaderboards
You need HolographicDisplays to work with Leaderboards, just use the placeholder:
Time Leaderboard/Map Records
Players can set their own record on each map.
Extra Information about Map Records:
For now some users have tested and everything is in place and no changes are needed.
Extra permissions
MCJukebox:
Showcase & Setup
Common problems
Code (Text):
[SpeedRun] Task #44 for SpeedRun v3.1 generated an exception
java.lang.IllegalArgumentException: No enum constant [SOUND]
at java.lang.Enum.valueOf(Enum.java:238) ~[?:1.8.0_111]
at org.bukkit.Sound.valueOf(Sound.java:1) ~[patched_1.10.2.jar:git-Paper-914]
at com.floodeer.speedrun.game.Game$1.run(Game.java:135) ~[?:?]
How to fix:
If you are using 1.9, 1.10 or 1.11 you have to change the sounds at settings.yml
Code (Text):
Sounds:
Checkpoint: ENTITY_PLAYER_LEVELUP:0.2 #For 1.9, 1.10 and 1.11
Please DO NOT use /reload with SpeedRun.
ParticleEffects
Sounds List
https://www.spigotmc.org/wiki/cc-sounds-list/
Potion Effect Types
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html
Material list
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
Pads
Code (Text):
1: #The pad ID
Material: REDSTONE_BLOCK #The block type
Data: 0 #The block data (e.g red wool you will set Material to WOOL and data to 14)
Boost-Options:
Enabled: true #If enabled this will be a boost block.
Multiply-Forward: 3.5
Multiply-Y: 0.8
Trap-Options:
Enabled: false #If enabled this will be a trap block.
Effects: #PotionEffects from the block.
Type: NONE #If "NONE" this will disable the block from giving any effect.
Duration: 0 #duration in ticks (20 = 1 sec)
Amplifier: 0 #potion effect amplifier
Custom-Action: "NONE"
API
Code (Text):
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import com.floodeer.speedrun.SpeedRun;
import com.floodeer.speedrun.game.Game;
import com.floodeer.speedrun.game.GameCheckPoint;
import com.floodeer.speedrun.game.GamePlayer;
public class SpeedRunAPI {
/**
* Get player data from player.
*
* @param bukkitPlayer - The player.
* @return GamePlayer - The player data.
*
*/
public GamePlayer getPlayerData(Player bukkitPlayer);
/**
* Get player data from name.
*
* @param name - The Player name.
* @return GamePlayer - The player data.
*
*/
public GamePlayer getPlayerData(UUID uuid);
/**
* Get player data from UUID.
*
* @param uuid - The UUID.
* @return GamePlayer - The player data.
*
*/
public GamePlayer getPlayerData(String name);
/**
* Get player a game from name.
*
* @param name - The map name.
* @return Game - The game.
*
*/
public Game getGame(String name);
/**
* Get player a game from a player.
*
* @param GamePlayer - The game player.
* @return Game - The game.
*
*/
public Game getGame(GamePlayer fromPlayer);
/**
* Send a updated data to Database (MySQL, SQLite or YAML)
*
* @param players - Players to save
*
*/
public void saveData(Player... players);
/**
* Get the music from the game.
*
* @return Music - the GameMusic class
*
*/
public Music getGameMusic(Game fromGame);
/**
* Send a plugin message to a channel via BungeeCord's channel and SpeedRun's subchannels.
*
* @param player - The player sending the message -- Player must be online.
* @param server - The target server.
* @param key - Your key to listen the message.
*
*/
public boolean forwardData(Player player, String server, String key);
/**
* Get the wins leaderboard;
*
* @return The list of avaliable data.
*/
public List<Entry<String, Integer>> getWinsLeaderboard();
/**
* Get checkpoints leaderboard;
*
* @return The list of avaliable data.
*/
public List<Entry<String, Integer>> getCheckpointsLeaderboard();
/**
* Get offline player data.
*
* @param name - The player name
* @return Offline player data
*/
public OfflineGamePlayer getOfflineGamePlayer(String name);
@EventHandler
public void onGameStart(GameStartEvent event) {
event.getGame().sendGameMessage("Game started!");
}
@EventHandler
public void onGameEnd(GameEndEvent event) {
GamePlayer p = event.getPlayerFromPosition(1);
event.getPlayerFromPosition(2).getP().sendMessage(p.getName() + " is better than you!");
}
@EventHandler
public void onAchievement(PlayerAchievementEvent event) {
event.getPlayer().sendMessage("New achievement: " + event.getType().toString());
}
@EventHandler
public void onCheckpoint(PlayerCheckPointEvent event) {
GameCheckPoint checkpoint = event.getCheckpoint();
event.getPlayer().teleport(checkpoint.getSafeLocation());
}
}
File and Screenshots
- 1.8
- 1.9
- 1.10
- 1.11
- 1.12
- 1.13
- 1.14
- 1.15
- 1.16
- Multi-Arena or bungee support.
- Achievements.
- Win fireworks & effects.
- Checkpoint effects.
- MySQL, Flatfile or SQLite support.
- Most game messages are configurable.
- Custom and configurable signs.
- Save and restore player inventory, levels and more.
- API with Game events.
- Visibility system.
- NoteBlockAPI for .NBS Game sounds! Play with custom different musics per map!
- 1 Winner, 3 positions, 2 and 3 positions will receive half of win coins.
- Win & checkpoints rewards.
- MCJukebox support! Play a real music with MCJukebox.
- Leaderboards and Map Records!
- Custom pads.
Bugs
I can't fix problems if I don't find them! If you have any issues, report via discussion or private message. Do not use the rating area to report bugs or request features. Please go to discussion.
Dependencies
To work with Leaderboards you can add Holographic Displays.
NBS Music
You can play custom Note Block Studio songs! You need NoteBlockAPI for this.
Arena setup
Required permission: sr.admin
First of all set global spawn using /sr setgspawn
- Create your arena - /sr create <name>.
- Set arena waiting lobby - /sr setlobby <name>
- Add spawn - /sr setspawn <name>
- Set min players - /sr setMinPlayers <name> <amount>
- Set max players - /sr setMaxPlayers <name> <amount>
- Select the checkpoint area the checkpoint tool - /sr addCheckpoint <name>
- Use /sr cptool to get the checkpoint tool, it work as the same way as WorldEdit.
- Put the block on your hand - /sr addblock <name>
- Finish the arena with - /sr finish <name>
Sign format:
- [SpeedRun]
- join
- ArenaName
Leaderboards
You need HolographicDisplays to work with Leaderboards, just use the placeholder:
- {sr_wins_number}
- Example: {sr_wins_1} will return player with most wins.
- {sr_wins_2} etc
- The message can be modified at
Leaderboard.Messages.Wins-Format Use the placeholders %player% for the player %wins% for the win amount and %position% for the position.
- {sr_checkponts_number}
- Example: {sr_checkponts_1} will return player with most checkpoints
- {sr_checkponts_2} etc
- The message can be modified at
Leaderboard.Messages.Checkpoints-Format Use the placeholders %player% for the player %checkpoints% for the checkpoint amount and %position% for the position.
- {sr_records_map_position}
- {sr_records_sr1_1} will return the player with the best time on the map sr1.
- {sr_records_sr1_2} etc
- The message can be modified at
Leaderboard.Messages.Map-Record-Format. Use the placeholders %time% for time in seconds,
%formatted_time% for mm:ss, %map% for the Map name and %position% for the position.
- {sr_records_sr1_1} will return the player with the best time on the map sr1.
Time Leaderboard/Map Records
Players can set their own record on each map.
Extra Information about Map Records:
- It only works with SQLite or MySQL.
- Can be disabled if you don't want to use.
- Will create a new database table.
- Will update and load before (reload) every game.
- This process should not have any impacts on performance.
For now some users have tested and everything is in place and no changes are needed.
- /sr join <arena> - sr.player
- /sr leave - no permission.
- /sr stats - sr.player
- /sr setgspawn - sr.admin
- /sr start <arena> - sr.moderator/sr.admin
- /sr stop <arena> - sr.moderator/sr.admin
- /sr config set/update <path> <value> - sr.commands.config/sr.admin
- /sr coins set/add/remve <player> <amount> - sr.command.coins/sr.admin
- /sr updatedata <player> - sr.command.update/sr.admin
- /sr leaderboard update - sr.admin
Extra permissions
- sr.joinfull - Allows you to join in full games.
MCJukebox:
- You can install MCJukebox to play musics.
Showcase & Setup
Common problems
Code (Text):
[SpeedRun] Task #44 for SpeedRun v3.1 generated an exception
java.lang.IllegalArgumentException: No enum constant [SOUND]
at java.lang.Enum.valueOf(Enum.java:238) ~[?:1.8.0_111]
at org.bukkit.Sound.valueOf(Sound.java:1) ~[patched_1.10.2.jar:git-Paper-914]
at com.floodeer.speedrun.game.Game$1.run(Game.java:135) ~[?:?]
How to fix:
If you are using 1.9, 1.10 or 1.11 you have to change the sounds at settings.yml
Code (Text):
Sounds:
Checkpoint: ENTITY_PLAYER_LEVELUP:0.2 #For 1.9, 1.10 and 1.11
Please DO NOT use /reload with SpeedRun.
ParticleEffects
Sounds List
https://www.spigotmc.org/wiki/cc-sounds-list/
Potion Effect Types
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html
Material list
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
Pads
Code (Text):
1: #The pad ID
Material: REDSTONE_BLOCK #The block type
Data: 0 #The block data (e.g red wool you will set Material to WOOL and data to 14)
Boost-Options:
Enabled: true #If enabled this will be a boost block.
Multiply-Forward: 3.5
Multiply-Y: 0.8
Trap-Options:
Enabled: false #If enabled this will be a trap block.
Effects: #PotionEffects from the block.
Type: NONE #If "NONE" this will disable the block from giving any effect.
Duration: 0 #duration in ticks (20 = 1 sec)
Amplifier: 0 #potion effect amplifier
Custom-Action: "NONE"
- Custom actions: BACK_TO_SPAWN and BACK_TO_CHECKPOINT
- BACK_TO_SPAWN will send the player to the arena spawn. This will not reset the checkpoints so you can back to your last checkpoint.
- BACK_TO_CHECKPOINT will force player to fail, sending back to last checkpoint.
API
Code (Text):
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import com.floodeer.speedrun.SpeedRun;
import com.floodeer.speedrun.game.Game;
import com.floodeer.speedrun.game.GameCheckPoint;
import com.floodeer.speedrun.game.GamePlayer;
public class SpeedRunAPI {
/**
* Get player data from player.
*
* @param bukkitPlayer - The player.
* @return GamePlayer - The player data.
*
*/
public GamePlayer getPlayerData(Player bukkitPlayer);
/**
* Get player data from name.
*
* @param name - The Player name.
* @return GamePlayer - The player data.
*
*/
public GamePlayer getPlayerData(UUID uuid);
/**
* Get player data from UUID.
*
* @param uuid - The UUID.
* @return GamePlayer - The player data.
*
*/
public GamePlayer getPlayerData(String name);
/**
* Get player a game from name.
*
* @param name - The map name.
* @return Game - The game.
*
*/
public Game getGame(String name);
/**
* Get player a game from a player.
*
* @param GamePlayer - The game player.
* @return Game - The game.
*
*/
public Game getGame(GamePlayer fromPlayer);
/**
* Send a updated data to Database (MySQL, SQLite or YAML)
*
* @param players - Players to save
*
*/
public void saveData(Player... players);
/**
* Get the music from the game.
*
* @return Music - the GameMusic class
*
*/
public Music getGameMusic(Game fromGame);
/**
* Send a plugin message to a channel via BungeeCord's channel and SpeedRun's subchannels.
*
* @param player - The player sending the message -- Player must be online.
* @param server - The target server.
* @param key - Your key to listen the message.
*
*/
public boolean forwardData(Player player, String server, String key);
/**
* Get the wins leaderboard;
*
* @return The list of avaliable data.
*/
public List<Entry<String, Integer>> getWinsLeaderboard();
/**
* Get checkpoints leaderboard;
*
* @return The list of avaliable data.
*/
public List<Entry<String, Integer>> getCheckpointsLeaderboard();
/**
* Get offline player data.
*
* @param name - The player name
* @return Offline player data
*/
public OfflineGamePlayer getOfflineGamePlayer(String name);
@EventHandler
public void onGameStart(GameStartEvent event) {
event.getGame().sendGameMessage("Game started!");
}
@EventHandler
public void onGameEnd(GameEndEvent event) {
GamePlayer p = event.getPlayerFromPosition(1);
event.getPlayerFromPosition(2).getP().sendMessage(p.getName() + " is better than you!");
}
@EventHandler
public void onAchievement(PlayerAchievementEvent event) {
event.getPlayer().sendMessage("New achievement: " + event.getType().toString());
}
@EventHandler
public void onCheckpoint(PlayerCheckPointEvent event) {
GameCheckPoint checkpoint = event.getCheckpoint();
event.getPlayer().teleport(checkpoint.getSafeLocation());
}
}
File and Screenshots