SpeedRun minigame

FREE SpeedRun minigame 3.8.4-SNAPSHOT

SpeedRun minigame
Tested Minecraft Versions:
  • 1.8
  • 1.9
  • 1.10
  • 1.11
  • 1.12
  • 1.13
  • 1.14
  • 1.15
  • 1.16
SpeedRun is a race with parkour, leave behind all the checkpoints and win the game!


OrqU9nr.png

  • 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.
tZsJMgY.jpg

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.


She6p1t.png


Arena setup
Required permission: sr.admin
First of all set global spawn using /sr setgspawn
  1. Create your arena - /sr create <name>.
  2. Set arena waiting lobby - /sr setlobby <name>
  3. Add spawn - /sr setspawn <name>
  4. Set min players - /sr setMinPlayers <name> <amount>
  5. Set max players - /sr setMaxPlayers <name> <amount>
  6. Select the checkpoint area the checkpoint tool - /sr addCheckpoint <name>
    1. Use /sr cptool to get the checkpoint tool, it work as the same way as WorldEdit.
  7. Put the block on your hand - /sr addblock <name>
  8. Finish the arena with - /sr finish <name>
The last checkpoint will be the win point (if player got all of the map checkpoints)

Sign format:
  1. [SpeedRun]
  2. join
  3. ArenaName
POU7614.png

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.
vT0ijLL.png


Time Leaderboard/Map Records
Players can set their own record on each map.
1Byzqoa.png

3zO2TVI.png


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.
This system is in BETA and may have future changes on how it will work on database so keep that in mind. Please report any bugs at discussion.

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
Manager commands

  • /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
Others:

  • /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

w7gBd5k.jpg

Extra permissions
  • sr.joinfull - Allows you to join in full games.
Additional
MCJukebox:

LR6jLu2.png

UWE1PfY.png



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

Similar resources

Speedrun Minigame Dekomori
MySQL/Yaml/SQLite | Bungee/MultiArena | Achievements | Leaderboards | API | MCJukebox/NBS |
0.00 star(s) 0 ratings
Downloads
334
Updated
SpeedRun Minigame LeakedSquid
MySQL/Yaml/SQLite | Bungee/MultiArena | Achievements | Leaderboards | API | MCJukebox/NBS |
0.00 star(s) 0 ratings
Downloads
75
Updated
Age Of Empire - New Minigame T0R&CM
A minigame inspired by the old game named Age of Empires from 2000. It is similar to Clash Of Clans.
4.00 star(s) 2 ratings
Downloads
172
Updated
BlackSpigot General Chat
Rules Help Users
    A @ AadrianN191290: hello
    Top