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, Flags Captured
Reward System.
Kits or Classes.
Kill-Assist system.
Avoid constant draws.
Very easy to setup.
Mounts.
Powerups!
Spectator System!
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 itself, 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:
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.
Arena setup
Required permission:
wizards.setup First of all set global spawn using
/wizards setgspawn
By setting
Options.Use-Class-Permission-As-Owned to true, players with the class permission will be able to select the class without needing to purchase it.
If
Options.Use-Class-Permission-As-Owned is set to false, players will need the permission to purchase the class.
For that, make sure to add a 'permission' line to the class file, for example:
With version 3.0 or above you can give items to players using Classes.
Full tutorial on items can be found in
pyromancer.yml at your classes folder.
(API) Creating your own Class
A quick note on this, you cannot use the class reload command when using the API to inject a new class, it will not register the class injected via API. Create your own reload command and access the API to manually reload and register your class again.
To create your own class, simple create a new Class that extends WizardClass and register on your onEnable using
Where Reaper is the class that extends WizardClass, Reaper is the Original name and reaper.yml the class file name that will be generated so you can change it however you want.
After creating the class, you need to manually add to the shop.yml;
Everything from here is taken from your class.yml, you can, of course, ignore all of that and create the class however you want without interacting with the class file.
That's it! There was no plan to let you add Classes via the API, but since it was possible to make it work... why not.
Classes: Explosions
You can either disable or limit the explosions from the special abilities.
To turn explosions off, go to settings.yml and set
Explosions to
false.
You can also limit the explosion, for example, you can disable explosions for blocks below Y coordinate:
Map config option at Min-Y-Explosions
This option will limit the block explosions for the Y coordinate, for example, if this is set to 32, all blocks below the Y=32 will not explode.
This can be done by editing the map file before the server stars or using /wizards setExplosionLevel <arena> <Y level>
You must finish the arena after using this command to save and apply the changes.
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.
Extra Kit Options
You can add these lines to execute commands, both of them has the %player% placeholder.
A kit.yml file will be created and you will be able to add your kits.
Some users are using Wizards as a
TDM Gamemode and/or playing with Guns, this is totally possible! You can disable all game objectives and set points per kill.
For the default Domination gamemode, you can check those options below.
Examples
Capture-Rate: Default > 1
Decrease to add capture time.
Capture-Max: Default > 24
Increase to add capture time.
Unbreakable-Armor
Enable or disable explosions.
Modify points per kill, points per second, game ticks that change game events, hand-damage, weapon damage and more.
A lot more! Check options.yml below.
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)
When enabled, a new file will be generated, levels.yml, with this file you will be able to add your levels, rewards and more:
Code (Text):
Levels:
Level-1: #Do not change the Level-1 section
exp: 0 #Required Exp
display-name: "&6Level 1" #Display name in level up message
prefix: "&6[1]" #Chat prefix, if enabled, hooked to PAPI
commands-to-execute: [] #Commands to execute when reaching the level
level-up-message: [] #Message to display
Level-2: #From now on you can change
exp: 10
display-name: "&6Level 2"
prefix: "&6[2]"
commands-to-execute:
- wizards coins add %player% 100
level-up-message:
- '&7&m--------------&7[&6&lWIZARDS&7]&m--------------'
- ''
- '&a&lLevel Up &e&l%level%'
- ''
- '&9Next level: &b%next_level% &7(%until_next_level%/%next_level_exp% EXP)'
- ''
- '&7&m-------------------------------------'
Level-3:
exp: 20
display-name: "&6Level 3"
prefix: "&6[3]"
commands-to-execute:
- wizards coins add %player% 100
level-up-message:
- '&7&m--------------&7[&6&lWIZARDS&7]&m--------------'
- ''
- '&a&lLevel Up &e&l%level%'
- ''
- '&9Next level: &b%next_level% &7(%until_next_level%/%next_level_exp% EXP)'
- ''
- '&7&m-------------------------------------'
Please do not change Level-1 as it is the default Database value, you can just use display-name to not show "Level-1" in game, the section name is just a backend thing.
Note that the reload command will not apply changes for levels.yml ATM.
How to Earn Exp
Players can earn Exp by playing, kills/assists, wins cand capturing points, check options.yml and you will see a new Exp section to modify.
Give Exp to old players
Set
Options.Update-Levels to true in options.yml, when a player joins the server after this update, players will get exp based on wins, games played and kills/assists.
Note that some exp methods (like point captured) is not stored to calculate.
What if I don't want to use Leveling system?
Just don't enable the option. Everything will work just fine without it.
NEW: CTF
NOTE: This feature is in BETA, please report bugs at discussion or Private Message.
Holographic Displays & ProtocolLib are recommended to use CTF so each team can see the flag holograms correctly.
This is not a separated game mode, you can set your arena to be CTF but there's no CTF wins or anything like that.
Key game features:
Your flag has to be safe for you to capture the enemy flag
The flag has 5 states: Safe, Stolen, Dropped, Captured, Respawning
Fully Holographic System
Scoreboard flag data
All sounds & messages can be changed
Works with classes and kits
You can make it works however you want
You can enable or disable certain skills for the flag carrier, like Crusader's Shield, Enderman's Recall and Double Jump.
The CTF can be played along the other game modes as well! You can add game objectives, CTF flags and use the KOTH system all at the same time.
To enable CTF go to Options.Game.CTF.Enable-Game-Tasks and set it to true, this will enable some tasks for the game to work. This is a option because if CTF is not being used the task would be still be running but doing nothing so the tasks will just not run if this is not enabled to save server resources.
After enabling the game tasks, you can add the flags to your arena by using
/wizards setLocation <arena> RED_FLAG and BLUE_FLAG
That's it! You can now customize the game mode. There's a ton of options, sounds and messages - everything is separated by a CTF section in config, so look for those.
Additionally, if you want to use CTF in some arenas and not on others, you can! Just like the Objectives Placeholder in scoreboard you can use
%ctf%. If the game does not detect any flags this placeholder will just be empty and the Scoreboard line will be reduced accordingly.
Other Scoreboard Placeholders:
%red_flags_captured%
%blue_flags_captured%
When capturing a flag you can add points to the team OR set a specific amount of flags that a team has to capture to win:
By setting
Captures-To-Win to
-1, the score system will be used. You can also set Score-To-Win to -1 and Captures-To-Win to positive value if you don't want kills to be part of the game; players can still get points by kills.
For classes, your Objective-Protection-Size at map config will apply to flags.
Very important config settings to know what they do:
Options.Game.CTF.Flag-Location-Threshold
The distance that the player needs to be to capture a flag
Options.Game.CTF.Update-Type
How frequent should the capture flag check update be, check Updates & Timer at plugin's page for more. Default is FAST (0.5 sec)
Everything is customizable.
Known issues:
When Always-Drop-Flag-On-Ground is set to true, the flag will sometimes not be visible, this is due how the server checks for the highest block, it's a very rare problem but it can happen. - Should be fixed in 6.0.4.
Scoreboard
You can fully customize the Scoreboard.
Players that are not in a game/in same game (or no playing) will not see colored tablist for teams.
In-Game Placeholder list:
%kit% - Player kit or class.
%formatted_time% - Game time in mm:ss
%kills% - Game Kills
%deaths% - Game Deaths
%red_points% - Red points
%blue_points% - Blue points
%red_points_per_second% - Red points per second
%blue_points_per_second% - Blue points per second
%objectives% - Will replace all next lines with the amount of objectives you have. %ctf - Will replace all lines with the CTF format at messages file.
Lobby placeholders list:
%players% - Current number of players
%maxplayers% - Max amount of players
%minplayers% - Min amount of players
%mapname% - The map name
%timer% - Starting timer
%state% and %capitalize_state% - Game state
%wins% - Player wins stat
%games_played% - Player Games played stat
%balance% - Player balance
%kit% - Player kit or class.
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.
Portals
This is a game mechanic to be used with Elytra, it will give you a velocity boost.
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.
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.
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.
Spectator Mode
You can spectate a game by using /wizards spectate <game>. Spectator has a different scoreboard from the normal game, you can change its lines on language file.
For BungeeCord, set
Options.Spectate-When-In-Game to
true and players will be added to the spectator mode if the match is in IN GAME state.
It will not work if the game is starting or ending, you will receive the message at
Messages.Cannot-Spectate.
The spectator spawn location can be added via the command
/wizards setLocation <arena> SPEC_SPAWN
Powerups
There are only 4 powerup type at the moment, but you can add your own powerups via the API, see below.
Check the WIKI for more info on Powerups.
To create your own Powerup, create a new class that extends Powerup, example:
Code (Text):
public class MyPowerup extends Powerup {
public MyPowerup(String configIdentifier, Location location, long interval) {
super(configIdentifier, location, interval);
}
You can now add your powerups to the arena using the command.
For Developers, a quick note here, make sure all your Powerup names are in
UPPER CASE, this is not a mechanic limitation, it is just to make it easier when setting up the arena and getting names from config files.
For admins who are setting up the arena it doesn't metter, you can use upper or lower case, it will convert to uppercase anyways.
One Class/Kit Per Game
This option is quite complicated so please read everything if you want to use it. When enabled, two players on the same team cannot use the same kit/class
Can be enabled at
Options.One-KitClass-Per-Teammate Message:
Messages.Kit-Already-Selected-By-Other
This also work for classes.
When enabled, the player will never haver a kit selected when joining a game.
If the game starts before a player chooses a kit, you can do the following: Check Options.Game.Action-When-Player-Kit-Is-Null
Actions
SHUTDOWN_GAME - Cancels the game
FORCE_RANDOM_DEFAULT - Forces a random kit anyways, it will result in duplicates.
REMOVE_PLAYER - Removes players without a kit from the game
GIVE_KIT_KITNAME - Gives a predetermined kit, for example GIVE_KIT_ARCHER
RESTART_COUNTDOWN - Set the game to starting again.
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.
Script system won't work on Java 11+ No plans to fix that, script system works better in Java 8.
(This is fixed in v3.0)
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.
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: Yes, check above to see how.
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. Also note that each arena is a world.
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.