Wizards ❱ Domination Minigame

SpigotVIP Wizards ❱ Domination Minigame 3.9.8.2

Wizards ❱ Domination Minigame
◦•●❤♡ ᴄᴏɴᴛᴀᴄᴛ Dekomori on discord ꜰᴏʀ ꜱᴜᴘᴘᴏʀᴛ ♡❤●•◦


Native Minecraft Version:
1.13
Tested Minecraft Versions: 1.8 / 1.12 / 1.16 / 1.17 / 1.18

Wizards is a Domination game.
Select your Wizard class and capture the map objectives to score.​
OrqU9nr.png

  • Multi-Arena and BungeeCord support.
  • Achievements.
  • SQLite and MySQL support.
  • Extremely configurable.
    • Signs, Scoreboard, messages, options and more.
  • Save and restore player inventory, levels and more.
  • API with Game events.
  • Custom items.
  • Leveling Up/Ranking System.
  • Game top Kills.
  • Holographic Leaderboards.
    • Top Damage, Heal, Kills and Wins.
  • Reward System.
  • Class Script system.
  • Kits or Classes.
  • Kill-Assist system.
  • Avoid constant draws.
  • Very easy to setup.
  • Mounts.
  • NEW: Powerups!
  • NEW: Spectator System!
tZsJMgY.jpg

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.


Default Game System
If you don't want to have skills and want to enable a kit system this is 100% possible, this system will be available soon with more gamemodes.


Dependencies
Wizards can run all systems by himself, however, you can install Holographic Displays to enable Leaderboards and Vault to work with global economy.

You can also install ItemBridge to hook with QualityArmory. You should be able to use CrackShot without ItemBridge.


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

%wizards_wins%
%wizards_gamesplayed%
%wizards_losses%
%wizards_kills%
%wizards_assists%
%wizards_deaths%
%wizards_damagecaused%
%wizards_healingdone%
%wizards_balance%

-- Arena Placeholders --
%wizards_arena_players_{arena}%
%wizards_arena_max_players_{arena}%
%wizards_arena_min_xplayers_{arena}%
%wizards_arena_status_{arena}%
%wizards_points-to-win_{arena}%

Usage example (DeluxeMenus):
[IMG]


An extra placeholder is %wizards_team_color% that returns player's team color, if in game. This was added in case you need to use a third party nametag plugin.



She6p1t.png


Arena setup
Required permission: wizards.setup
First of all set global spawn using /wizards setgspawn
  1. Create your arena - /wizards create <name>.
  2. Add spawn - /wizards setLocation <name> <location>
    1. Locations: BLUE_SPAWN, RED_SPAWN, LOBBY.
  3. Add arena objective - /wizards setObjective <name> <objective>
    1. Objectives: A, B, C.
    2. Objectives are a 3x3 area with e beacon on center of the objective (center set by this command)
  4. Set min players - /wizards setMinPlayers <name> <amount>
  5. Set max players - /wizards setMaxPlayers <name> <amount>
  6. Finish setup and create game - /wizards finish <name>
Objectives are a 3x3 area with e beacon on center.

Sign format:
  1. [Wizards]
  2. join
  3. ArenaName
Video:

Leaderboards
You need HolographicDisplays to work with Leaderboards, just use the placeholder:
  • {wizards_wins_number}
    • e.g: {wizards_wins_1} will return player with most wins.
    • {wizards_wins_2} etc
  • {wizards_kills_number}
    • e.g: {wizards_kills_1} will return player with most checkpoints
    • {wizards_kills_2} etc
Placeholders:
  • {wizards_kills_NUMBER}
    • %kills% from player.
  • {wizards_wins_NUMBER}
    • %wins% from player.
  • {wizards_damage_NUMBER}
    • %damage% from player.
  • {wizards_healing_NUMBER}
    • %healing% from player.


NiPwpwB.png


Command: wizards
Aliases: wzds, wrz.
  • /wizards join <arena> - no permission.
  • /wizards leave - no permission.
  • /wizards stats - no permission.
Manager commands

  • /wizards setgspawn - wizards.admin
  • /wizards start <arena> - wizads.moderator/sr.admin
  • /wizards stop <arena> - wizads.moderator/sr.admin
  • /wizards reload - wizards.admin
    • SAVES all config files.
Others:
  • /wizards coins set/add/remve <player> <amount>
    • Permission: wizards.admin
    • Updates player balance, command will not work with Vault support enabled.
  • /wizards update <player>
    • Permission: wizards.admin
    • Sends a update to database.
  • /wizards updateLeaderboard
    • Permission: wizards.admin
    • Updates the Leaderboard.
  • /wizards portals
    • Permission: wizards.admin
    • Manage arena portals (see below)
  • /wizards creload
    • Permission: wizards.admin
    • Will reload all classes files, you can now modify a value then use this command to apply the changes.
      • This command reloads all events, so it cannot be used if there is a game running.
  • /wizards kits
    • Permission: wizards.manager.kits
    • /wizards kits create <name> (price) (needsPerm) (perm) (display-item)
      • () are for optional arguments, it has default values: 1000, false, kits.{name}, random item with kit's name.
      • I'd recommend you to manully modify your kit in kits file then using kits reload command.
    • /wizards kits delete <name>
      • Deletes a kit from kits.yml.
    • /wizards kits reload
      • Reloads all kits.

w7gBd5k.jpg


Classes
The main objective of all classes are the same - shoot a spell or projectile to cause damage, you will decide everything else of the class.

There are 4 classes on v1.0.0, 2 more should be coming very soon, suggestiosn for classes are appreciated.
  • Pyromancer
    • Fires a spell of Fire, you can modify everything else at pyromancer.yml.
  • Aquamancer
    • Fires a spell of water, you can modify everything else at aquamancer.yml.
    • Can heal allies, you can set the amount and area of healing.
  • Herobrine
    • Fires a particle spell that will strike and bump up the damage, you can modify everything else at herobrine.yml.
  • Wither
    • Fires a wither skull, you can modify everything else at wither.yml.
  • Mage
    • Fires a spell that will follow players until collide or until reaches the travel-limit.
    • giphy.gif
  • Fighter
    • Loads a single-target super punch.
    • giphy.gif
  • Crusader NEW!
    • Creates a temporary shield for you and to nearby teammates.
      giphy.gif
You can modify everything of all classes, the damage, explosion area and more.

Code (Text):

display-name: 'Aquamancer'
description:
- '&9Aquamancer'
- ' '
- '&7Shots a spell of Aqua'
- '&7causing damage to enimies and'
- '&7healing teammates.'
price: 500
mana-cost-per-use: 25
mana-per-hit: 2
max-distance: 80
damage: 2.5
damage-area: 4.0
explosion-radius: 2.5
display-item: 'IRON_AXE: 1'
weapon: 'IRON_AXE : 1 : name:&bHealing'
helmet: 'IRON_HELMET : 1'
chestplate: 'IRON_CHESTPLATE : 1'
leggings: 'IRON_LEGGINGS : 1'
boots: 'IRON_BOOTS : 1'
scripts: []
target-scripts: []

Kits
You can use Kits instead of classes.

Enabling Use-Kits-Instead-Of-Classes in options.yml will disable all Game Effects caused by the Classes
  • No more speed and jump.
  • No more custom PvP damage.
  • No more Classes Shop, only kits.
  • No more custom Healing potions.
  • No more double-jumps.
A kit.yml file will be created and you will be able to add your kits.



Scripts
Wizards can run a "script" system, called when players use the skill and a target gets hurt by a skill.

You need to set "JS-Engine" to true in options.yml to run Scripts.

Example 1 - sending a message to the player who used the skill.
Code (Text):
scripts:
- "player.sendMessage(\"You used your skill.\");"

Example 2 - setting target (if valid) on fire for 3 seconds.
Code (Text):
target-scripts:
- "target.setFireTicks(60)"
Supported methods
  • Bukkit#
  • Player#
  • Wizard#
    • "wizard.explode(target);" - For target type only, will generate a explosion.
    • "wizard.damage(target, amount);" - For target and player, will cause random damage.
    • "wizard.heal(target, amount);" - For target and player, will heal.
  • Wizards API (see below).
Supported parameters
  • player, gameplayer, api, wizard, server, ally, allyplayer, target, targetplayer
  • GamePlayer (gameplayer, gametarget and gameally) refers to Wizard's player class, you can modify in-game and databaase data with this class.
You cannot summon new objects with Scripts.

Updates & Timer
Code (Text):

Options:
Game:
Mana-Update-Type: '75'
This means that the update type is set to TICK_2 (1 mana every0,075s)

Update division

Code (Text):
SEC = 1000 (1s)
FAST = 500 (0,5s)
FASTER = 250 (0,25s)
FASTEST = 125 (0,125s)
TICKS_2 = 75 (0,075s)
TICK = 49 (0,049s)

Avoid Draw System
To avoid constant draws you can enable the avoid-draw system.

If game reaches max time will end in a Draw, however, with avoid-draw the game will check the team with most kills and this team will win.

If both teams has same amount of kills the game will draw - A overtime system was tested but not implemented.

Teams
There are two teams, so the amount of players per team is the division of max players per game by 2, make sure to set the max of players multiples of 2.

If the team size is smaller than game player amount divided by 2 the player will not be able to join.

(NEW) Portals
This is a game mechanic to be used with Elytra, it will give you a velocity boost.
9ib1MlX.png


Some information about the portals:
  • Each portal can have different particle, velocity and more.
  • Portals are saved in arena folder.
    • They are not saved in arena file due dynamic access, arena file should not be constantly accessed.
    • Each portal will have a different name in arena file so you can indentify them.
Here's a example of an portal file.

bQLuKMj.png


(NEW) Mounts
You can enable mounts if your map is too big and you don't have jump or speed enabled, mounts will work with kits or classes.

Some information about the mount system:
  • You will receive a item (you can edit this item) when game starts, right click on it to spawn your horse.
  • Horses will not receive damage, however he will despawn if the passenger receives any damage.
  • Horse will despawn when you press shift.
  • You can modify the horse varient, speed and jump.
  • Has a cooldown to use, you can modify it.
    • Cooldown will trigger after you dismount the horse.

This feature is disabled by default so you will not receive the mount item. You can enable it on the options.yml file.

Perks
Perks are not available yet.

Game Arena
Spawn-Protection-Size & Objective-Protection-Size

In your arena.yml you will see Spawn-Protection-Size and Objective-Protection-Size, this will set the protected area where skills cannot explode blocks.

Extra permissions
  • wizards.joinfull - Allows you to join in full games.
  • wizards.kits.all - Access to all classes/kits.
Common problems
FPS Instability

This is a minecraft-side problem, I can't do much about it.

Disabling fireworks, explosions and falling blocks in config should help.
Code (Text):
Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.Sound.....
How to fix:
If you are using 1.9 or above, you have to change all sound values in options.yml to 1.9.
Please DO NOT use /reload with Wizards.

Sounds List (1.9/above and 1.8)
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

API

Code (Text):

import org.bukkit.event.EventHandler;

import com.floodeer.wizards.api.DamageBlockEvent;
import com.floodeer.wizards.api.GameEndEvent;
import com.floodeer.wizards.api.GameStartEvent;
import com.floodeer.wizards.api.PlayerAchievementEvent;
import com.floodeer.wizards.api.PlayerHitEvent;
import com.floodeer.wizards.api.PlayerSkillUseEvent;
import com.floodeer.wizards.game.GamePlayer;
import com.floodeer.wizards.game.achievements.AchievementType;

public class APIShowcase {

WizardsAPI api = null;

public APIShowcase() {
api = Wizards.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 boolean forwardData(Player player, String server, String key);

public List<Entry<String, Integer>> getWinsLeaderboard();

public List<Entry<String, Integer>> getKillsLeaderboard();

public List<Entry<String, Integer>> getDamageLeaderboard();

public List<Entry<String, Integer>> getHealLeaderboard();

public OfflineGamePlayer getOfflineGamePlayer(String name);

//API usage
public String getPlayerWithMostWins() {
String player = "";
int wins = 0;
if(api.getWinsLeaderboard().get(0) != null) {
player = api.getWinsLeaderboard().get(0).getKey();
wins = api.getWinsLeaderboard().get(0).getValue();
}
return player + " with " + wins + " wins";
}



//Events
@EventHandler
public void onSkillUse(PlayerSkillUseEvent event) {
GamePlayer player = event.getPlayer();
if(player.getP().isSneaking())
player.setMana(player.getMana()+5);
}

@EventHandler
public void onGameStart(GameStartEvent event) {
event.getGame().sendTitle("The", "start");
}

@EventHandler
public void onGameEnd(GameEndEvent event) {
event.getWinner().getPlayers().forEach(player -> player.sendMessage("You won!"));
}

@EventHandler
public void onAchievement(PlayerAchievementEvent event) {
if(event.getType() == AchievementType.WINS) {
event.getPlayer().sendMessage("Wins!");
}
}

@EventHandler
public void onPlayerDamage(PlayerHitEvent event) {
GamePlayer damager = event.getDamager();
GamePlayer target = event.getPlayer();
if(target.getName().equalsIgnoreCase("Floodeer")) {
event.setCancelled(true);
}else{
if(!target.getP().isSneaking())
event.setDamage(event.getDamage() + 2);

damager.getP().sendMessage("Hit " + target.getName() + " with " + event.getDamage() + " of damage.");
}
}

@EventHandler
public void onDamageBlock(DamageBlockEvent event) {
GamePlayer damager = event.getDamager();
GamePlayer blocker = event.getPlayer();
if(blocker.getP().isSneaking()) {
event.setDamage(event.getDamage()/2);
}
blocker.getP().sendMessage("Blocked " + event.getDamage() + " from " + damager.getName());
}
}

Files and Screenshots

Game Scoreboard

TPfghE3.jpg


Points
vnrrhCA.jpg



Classes
wZ9scec.jpg


afTmItY.jpg


UTF-8 support for all files.













Q&A
Q: The game says the team is full but there is no player on the team/team is not full.
A
: This happens because of the team balancing system that tries to match teams according the amount of players.

Q: What can I do with the Script system?
A
: Script system is very simple, was just made to run small tasks like summon methods, all the info are above.

Q: Can I add more classes?
A
: Not yet, you can only get more classes via plugin updates for now, if you want to buy the source to your developers will cost an additional of $12 (we can discuss the final price for sure), you can contact me via PM.

Q: Plugin is causing TPS problems, what can I do?
A
: You should not run Wizards with low memory, try disabling some particles, explosions or/and game effects like falling blocks and fireworks. Also try using kits if your server is not supporting the plugin. Wizards tasks should not cause your server any performance instability.

Q: Why is wizard's size more than 390KB?
A
: There's a lot of files inside the plugin, not just code. Whenever a class is not used or gets deprecated a update should replace or remove them, there's also a lot of things for planned features.

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

Latest updates

  1. 3.9.8.2

    3.9.8.2
  2. 3.9.4

    3.9.4
  3. 1.9.9.1

    1.9.9.1

Similar resources

Wizards Skies Skyblock Spawn // PURPLE // FANTASY // --== LEAKED / DOLLAR-BUILDS.COM \ BUILD ==-- Dekomori
0.00 star(s) 0 ratings
Downloads
68
Updated
ArathiBasin - a domination mini-game BadLeakGuy
Capture and hold bases to generate resources and win!
0.00 star(s) 0 ratings
Downloads
125
Updated
ArathiBasin - a domination mini-game (Similar to Hypixel: Warlords) BlackSpigot.com
3.67 star(s) 3 ratings
Downloads
197
Updated
BlackSpigot General Chat
Rules Help Users
    C @ CatatonicWade: @vr4u I do, wanna trade?
    Top