Please read everything before making your decision on purchasing the Resource. Check ToS.

Popular Dragons & Dragon Escape Minigames

[img] tag

[img] tag
  • 2 Dragons minigames in 1 plugin, you can have both running.
  • Multi-Arena and BungeeCord support.
  • Achievements.
  • SQLite and MySQL support.
  • Leaderboard.
  • Extremely configurable.
    • Signs, Scoreboard, messages, options and more.
  • Save and restore player inventory, levels and more.
  • Reward System.
  • Kits
  • Very easy to setup.
  • Map Records
[img] tag
Bugs
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
Dragons can run all systems by himself, however, you can install Vault to work with global economy and HolographicDisplays to work with Leaderboards.

PlaceholderAPI support
The following placeholders are available, they are self explanatory:

%dragons_dragonescape_wins%
%dragons_dragonescape_gamesplayed%
%dragons_dragonescape_losses%
%dragons_wins%
%dragons_gamesplayed%
%dragons_losses%

[img] tag

Arena setup (Dragons)
    Required permission: dragons.setup
    First of all set global spawn using /dr setgspawn
  • Create your arena - /dr create <name> Dragons.
  • Add player spawn - /dr addSpawn <name>
  • Set Sky - /dr setSky <name>
  • Add dragon spawn - /dr addDragon <name>
    • DO NOT add a dragon spawn BELOW the SKY!
  • Set min players - /dr setMinPlayers <name> <amount>
  • Set max players - /dr setMaxPlayers <name> <amount>
  • Finish setup and create game - /dr finish <name>




Sign format:
  • [Dragons]
  • join
  • ArenaName
[img] tag

Arena setup (Dragon Escape)
    Required permission: dragons.setup
    First of all set global spawn using /dr setgspawn
  • Create your arena - /dr create <name> DragonEscape
  • Add player spawn - /dr addSpawn <name>
  • Add dragon spawn - /dr setDragonSpawn <name>
  • Add dragon waypoint - /dr addWaypoint <name>
    • Important! Waypoint are locations for the Dragon to fly to, check the video tutorial!
  • Set Sky - /dr setSky <name>
    • Optional for this gamemode, but recommended.
  • Set min players - /dr setMinPlayers <name> <amount>
  • Set max players - /dr setMaxPlayers <name> <amount>
  • Finish setup and create game - /dr finish <name>





Sign format:
  • [DragonEscape]
  • join
  • ArenaName

[img] tag

[img] tag

Command: dragons
Aliases: drag, dr
  • /dr join <arena> - no permission.
  • /dr leave - no permission.
  • /dr stats - no permission.
Manager commands
  • /dr setgspawn - dragons.admin
  • /dr start <arena> - dragons.moderator/dragons.admin
  • /dr stop <arena> - dragons.moderator/dragonsadmin
  • /dr reload - dragons.admin
    • SAVES all config files.
Others:
  • /dr coins set/add/remve <player> <amount>
    • Permission: dragons.admin
    • Updates player balance, command will not work with Vault support enabled.

[img] tag

Kits
You can add kits, add potions to kits and more.

[img] tag
  • Cooldown: Cooldown of the main kit item, the leap axe; 1000 = 1s;
  • Type: Where this kit will work
    • DRAGONESCAPE for Dragon Escape.
    • DRAGONS for Dragons.
    • BOTH for both.
  • Max-Uses
    • Max-uses of the leap axe.
Leap axe cannot be remove as a kit item.

To add potion effect to the kit, add a custom line named potion-effects, for example:
...
    type: "BOTH"
    potion-effects:
    - 'SPEED : 1000 : 1'
    permission: ""
...

EFFECT : DURATION IN SECONDS : LEVEL

Potion Effect List here!

  kits.yml

Achievements
You can have how many achievements you want.

[img] tag

  achievements.yml

Holographic Leaderboards
[img] tag
Placeholder: {dragons_wins_position}
  • e.g: {dragons_wins_1} for the player with most Dragons wins.
Placeholder: {de_wins_position}
  • e.g: {de_wins_1} for the player with most DragonEscape wins.
Example of HolographicDisplays database.yml
[img] tag

Note that the Placeholder value of the Hologram can be changed at language.yml in Wins-Format.
[img] tag



Map Records (NEW!)
  • 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.
  • The time is stored in ms and converted to ss:mm.SSS.
[img] tag

Hologram Leaderboard:
{de_records_map_position}
Example:
[img] tag

Personal Records
  • Personal records will only work for players that have set a record time on a map before.
  • If you previus run was, let's say, 40s and your next 30s, your data will be updated.
  • Note that this only counts if you win the game (or Send All Data to Database option is enabled).
  • Can be turned off if you don't want to use this sytem.
[img] tag

Send All Data to Database (Options.Leaderboard.Send-All-Data-To-Database), false by default
    • This will send the timer of all players that played a game to the database.
      • That means you don't have to beat the Map Record to join the leaderboard.
      • Personal Records will work better with this option enabled
      • Note that if you have a lot of maps this can be lead to a heavy databases. However, it will not impact performance.


Extra permissions
  • dragons.joinfull - Allows you to join in full games.
  • dragons.kits.all - Access to all kits.
  • dragons.bungeebypass
    • It will allow a player to join a game server without being added to the game. This permission is set to false by default, meaning that not even ops will have it.
Common problems
FPS Instability (1.15+)
This is a minecraft-side problem, I can't do much about it.

Disabling fireworks, explosions and falling blocks in config should help.

Dragon killing everyone at the start (Dragon Escape)
Your waypoint setup is probably incorrect. When creating an arena, make sure to set at least one waypoint closer (not on Dragon spawn, but close, in front of it) to the Dragon first, then you can gradually add waypoints to move the Dragon however you want. The Dragon will go to the closest Waypoint OR to the next checkpoint that the game calculated according to your waypoint setup.

If you are having too much trouble, send me a Private Message with your setup, I may be able to fix it for you.

Sounds List
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html

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

API
import com.floodeer.dragons.Dragons;
import com.floodeer.dragons.DragonsAPI;
import com.floodeer.dragons.api.DragonTargetEvent;
import com.floodeer.dragons.api.GameEndEvent;
import com.floodeer.dragons.api.GameStartEvent;
import com.floodeer.dragons.api.PlayerAxeUseEvent;
import com.floodeer.dragons.game.GamePlayer;
import com.floodeer.dragons.game.GameType;
import com.floodeer.dragons.game.IGame;
import com.floodeer.dragons.game.dragons.DragonSctructure;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;

import java.util.UUID;

public class APIShowCase {

    private final DragonsAPI api;

    public APIShowCase() {
        api = Dragons.getAPI();
    }

    //API Methods
    public GamePlayer getPlayerData(Player bukkitPlayer);

    public GamePlayer getPlayerData(UUID uuid);

    public GamePlayer getPlayerData(String name);

    public Game getGame(String name);

    public Game getGame(GamePlayer fromPlayer);

    public void saveData(Player... players);

    public void updateLeaderboard(boolean receiveAfter);

    //Game Events

    @EventHandler
    public void onGameStart(GameStartEvent event) {
        IGame game = event.getGame();
        if(event.getType() == GameType.DRAGONS) {
            game.getPlayers().forEach(player -> player.getP().sendMessage("You are playing Dragons!"));
        }
    }

    @EventHandler
    public void onGameEnd(GameEndEvent event) {
        IGame game = event.getGame();
        if(event.getType() == GameType.DRAGON_ESCAPE) {
            GamePlayer winner = event.getWinner(); // event.getPositions().get(0), depending on your settings.yml
            Player second = event.getPositions().get(1);
            Player third = event.getPositions().get(2);
        }
    }

    @EventHandler
    public void onPlayerUseKit(PlayerAxeUseEvent event) {
        if(event.getKit().getName().equalsIgnoreCase("NoShift") && event.getPlayer().isSneaking())
            event.setCancelled(true);
    }

    @EventHandler
    public void onDragonTarget(DragonTargetEvent event) {
        if(event.getType() == DragonSctructure.TargetType.PLAYER) {
            event.getTarget().sendMessage("Be careful!");
        }
    }
}

Files and Screenshots
  Screenshots

UTF-8 support for all files.

  {arena}.yml

  language.yml

  options.yml

Check some reviews on my resources; (Reviews across multiple Resources, other resources are coming soon to Poly!)[img] tag

If you have any suggestions go to Discussion and I'll be happy to read them.

By buying Dragons you agree to
  • You are not allowed to distribute this plugin.
  • You are not allowed to decompile this plugin.
  • Use only for your network/server.
  • NO refunds.
  • All support given is on Spigot and Polymart only. You will not have Discord, Skype or any of those type of contact to ask for support. I'll probably reply in a few minutes! Otherwise, wait at least 12 hours or check my profile to see any updates.
  • Accept future terms.