HomeJavaModsAdditions | Free version | Menus, items, commands & more | 1.8x - 1.14x
Additions | Free version | Menus, items, commands & more | 1.8x - 1.14x
ModsJava

Additions | Free version | Menus, items, commands & more | 1.8x - 1.14x

⬇ Download on Spigot
THIS VERSION IS DISCONTINUED!
We are no longer updating the free version of Additions.
For an updated version, with more features, go to the AdditionsPlus page .
If your chat gets spammed by messages saying to vote 5-stars for this review and to not forget to vote for the server, please go to the intervalactions.yml file.
You can disable/change the actions there.

We get a lot of people issuing us about getting spammed by this plugin and then leave a 1-star / bad review just based on that.

If you experience any bug, please issue us FIRST before leaving a review!*

* We will still provide full support for the free version, but we will not add any new things, or release any new versions as we will ONLY update Additions+ (paid version) from now on.

[​IMG]
[​IMG]
[​IMG]
[​IMG]
It's not a complicated system. You simply put the event name (see event list) in the file, add a : behind it, then press enter, add 2 spaces, type actions: , press enter, and type right under actions: a line (-) and put the action in it. For more actions, just add more lines.
Code (YAML):

join
:
  actions
:
 - 'action1'
  - 'action2'
leave
:
  actions
:
 - 'action1'
  - 'action2'
drop
:
  actions
:
 - 'action1'
  - 'action2'
fishing
:
  actions
:
 - 'action1'
  - 'action2'
kill
:
  actions
:
 - 'action1'
  - 'action2'
dead
:
  actions
:
 - 'action1'
  - 'action2'
shear
:
  actions
:
 - 'action1'
  - 'action2'
itembreak
:
  actions
:
 - 'action1'
  - 'action2'
consume
:
  actions
:
 - 'action1'
  - 'action2'
entitykill
:
  actions
:
 - 'action1'
  - 'action2'
 
If you don't want action to be performed for that event, just remove the event type (see underlined words in the event list) or set the actions of that event to []. An example is then:
Code (YAML):

join
:
  actions
: [ ]
 
Version 2.8.0 also adds the possibility to set the death, join and leave message of players. If you want to remove it, just set it to ''.
The right way to use them are:
Code (YAML):

join
:
  joinMessage
: '&a&l %player% joined the server'
  actions
: [ ]
leave
:
  leaveMessage
: '&c&l %player% left the server'
  actions
: [ ]
dead
:
  deathMessage
: '&c %player% is soon to be hosting his own funeral as a ghost. Please be there, he''d like that. &lR.I.P'
  actions
: [ ]
 
[​IMG]
Creating custom commands isn't hard with this easy system. It practically works the same as the events, but you do it in the commands.yml file, and instead of the event name, you type the command.
All actions can be used on either the events or the commands.

Code (YAML):

help
: # would be '/help' ingame
  actions
:
 - ' [ msg ] &7 --- - &bHelp Menu &7 --- -'
  - ' [ msg ] &b/helpop &7Get help from an operator'
  - ' [ msg ] &r'
  - ' [ msg ] &fpage 1/2'
help 1
: # would be '/help 1' ingame
  actions
:
 - ' [ msg ] &7 --- - &bHelp Menu &7 --- -'
  - ' [ msg ] &b/helpop &7Get help from an operator'
  - ' [ msg ] &b/help 2 &7Next page of the help menu
  - ' [ msg ] &r'
  - ' [ msg ] &fpage 1/2'
help 2
: # would be '/help 3' ingame
  actions
:
 - ' [ msg ] &7 --- - &bHelp Menu &7 --- -'
  - ' [ msg ] &b/server &7Select a server'
  - ' [ msg ] &b/help 1 &7Previous page of the help menu'
  - ' [ msg ] &r'
  - ' [ msg ] &fpage 2/2'
 

The commands can also have permissions. If you don't specify the permission, everyone will be able to perform the command. If you do specify the permission, the player needs it to perform it.
If the player doesn't have the permission, the noPermission message will be sent to the player. This can be specified per command. If you don't specify the noPermission message, the default message will be sent: "&cYou don't have permission to do this".
The correct usage of permissions and the noPermission message is:
Code (YAML):

rankup 3
:
  permission
: yourperm.rankup.2
  noPermission
: '&cYou must be at least rank 2 to rankup to rank 3. You can buy ranks in our store.'
  actions
:
 - ' [ title ] &a&lRANKED UP\n&7You are now level 3!'
  - ' [ msg ] &aCongratulations! You are now rank 3.'
  - ' [ console ] pex user %player% add yourperm.rankup.2'
 
Version 2.6.0 also offers the usage of cooldowns in commands. You can add a cooldown time to the command. You can also add a cooldownMessage to the command. This message will be sent to the player when the command is on cooldown for that player. Use %time% in the cooldownMessage for the remaining time.
The correct usage of these features is:
Code (YAML):

mycommand
:
  cooldown
: 1200 # 1200/20 = 60 seconds ( 1 minute )
  cooldownMessage
: '&cYou can only use this command once per minute. You have to wait for another %time%'
  actions
:
 - ' [ msg ] &aThis is a command with a cooldown'
 
Spoiler: Result
When you don't have permission:
[​IMG]
When you do have permission:
[​IMG]
And also the command in the console is being performed. The permission has been successfully added to my permission list.
[​IMG]
[​IMG]
Creating custom menus isn't hard to do. The plugin will automatically generate a 'menus' folder when enabling it. In that folder, you create your custom menus. Each menu is separated and has its own YAML file. The name of the menu is the file name without .yml.

You simply create a YML file with as name the menu name. You only use this name to open the menu in the /additions command or [menu] actions.
Example: example.yml . You open this menu with /additions openmenu example .


In version 2.8.0, the whole menu system has been recoded to add more customizability for the items and its display. If you are using 2.7.0 or lower (which I don't recommend), read the old tutorial below.

You can set everything of an item in the new version. You can add enchantments, add item flags to hide the enchants, and all other things. Note that all messages support color codes and Placeholders.
Below are the non-item options you can set for the menu:
title :
Description: The title of the menu
Type: String
Required: true
command :
Description: The command to open the menu
Type: String
Required: true
size :
Description: Size of the menu. Must be either, 9,18, 27, 36, 45 or 54.
Type: Integer
Required: true
permission :
Description: The permissions needed to open the menu
Type: String
noPermission :
Description: The message that will be sent when a player doesn't have the specified permission to open the menu
Type: String
cooldown :
Description: The cooldown amount in ticks before the player can open the menu again. (1 second = 20 ticks)
Type: Long
cooldownMessage :
Description: The message that will be sent when a player is on cooldown for that menu. Use %time% for the remaining time
Type: String
openActions :
Description: Actions that will be performed when the player opens the menu
Type: String List
closeActions
Description: Actions that will be performed once the player closes the menu
Type: String List
If you set all of that, your file will look something like this:
Spoiler: Example Menu
Code (YAML):

title
: '&b&lExample Menu ( %player%)'
size
: 9
commands
: examplemenu
# optional
permission
: myperm.examplemenu
noPermission
: '&cWell.. This is too exclusive for your eyes : ) '
cooldown
: 200 # 200 ticks = 10 seconds (200/20=10)
cooldownMessage
: '&cYou can only open this menu once per 10 seconds. You have to wait for another %time%'
openActions
:
- ' [ msg ] &aYou opened the menu : ) '
closeActions
:
- ' [ msg ] &cYou closed the menu : ( '
 
Now you're ready to add the contents to the menu. You add all items under the content section. Then add the slot number (starting at 1, not 0) under it between brackets: '1'. Like this:
Code (Text):
content:
  '1':
  '2':
Then you set the item information. Below is a list of all options you can add to the item to customize it, literally everything is possible.
material :
Description: The material type of the item. If you have the HeadDatabase plugin, you can set this item to a custom head using "hdb-<headID>". Replace <headID> with the ID of the head. You can also set a player head using "head-<player>". Replace <player> with the player's name (this also supports the placeholder %player%)
Type: Material Type
Required: True
data :
Description: The data of the item (for 1.8-1.12 only)
Type: Byte (Integer)
displayName :
Description: The display name (title) of the item
Type: String
Required: True
amount :
Description: The amount of the item
Type: Integer
durability :
Description: The durability of the item
Type: Short (Integer)
lore :
Description: The lore of the item
Type: String List
itemFlags :
Description: The item flags of the item. Click here for a list of item flags
Type: ItemFlag List
enchantments :
Description: The enchantments that should be applied to the item. To set the enchantment level use the format ENCHANTMENT:LEVEL (DURABILITY:3). Click here for a list of 1.12.2 enchantments.
Type: Enchantment List
unbreakable :
Description: Whether the item should be unbreakable or not
Type: Boolean
left_click_commands :
Description: A list of actions that will be performed when you left-click the item
Type: String List
right_click_commands :
Description: A list of actions that will be performed when you right-click the item
Type: String List
If you did all that, the file will look something like:
Spoiler: Example Menu
Code (YAML):

title
: '&b&lExample Menu ( %player%)'
size
: 9
commands
: examplemenu
# optional
permission
: myperm.examplemenu
noPermission
: '&cWell.. This is too exclusive for your eyes : ) '
cooldown
: 200 # 200 ticks = 10 seconds (200/20=10)
cooldownMessage
: '&cYou can only open this menu once per 10 seconds. You have to wait for another %time%'
openActions
:
- ' [ msg ] &aYou opened the menu : ) '
closeActions
:
- ' [ msg ] &cYou closed the menu : ( '
# menu items
content
:
  '1'
: # slot 1
    material
: STONE
    data
: 0
    amount
: 2
    displayName
: '&7Some random &lStone'
    lore
:
   - ''
    - '&7This stone could be yours, &b %player%'
    - '&7This another lore item : ) '
    enchantments
:
   - DURABILITY:3
    - FIRE_ASPECT:10
    - MENDING
    itemFlags
:
   - HIDE_ATTRIBUTES
    - HIDE_DESTROYS
    - HIDE_ENCHANTS
    - HIDE_PLACED_ON
    - HIDE_POTION_EFFECTS
    - HIDE_UNBREAKABLE
    unbreakable
: true
    left_click_actions
:
   - ' [ msg ] &7You left-clicked a random stone'
    right_click_actions
:
   - ' [ msg ] &7You right-clicked a random stone'
  '2'
:
    material
: head- %player%
    amount
: 1
    displayName
: '&b&lYour head'
    lore
:
   - ''
    - '&7This is your own head'
    - '&7Don''t worry. It is not chopped off'
    itemFlags
:
   - HIDE_ATTRIBUTES
    - HIDE_DESTROYS
    - HIDE_ENCHANTS
    - HIDE_PLACED_ON
    - HIDE_POTION_EFFECTS
    - HIDE_UNBREAKABLE
 
Oof. You now know how to create a menu :)
Spoiler: Version 2.7.0 or lower
First, you set the title of the menu. It supports color codes and even placeholders. Do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
Then you add the size of the menu. This has to be either 9, 18, 27, 36, 45 or 54. Other numbers will cause errors. Do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
size: 54
The last thing you need to do before you set the content is the open command. Performing this command will open the menu. If you want the command to be '/example' do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
size: 54
command: example
Now you can optionally set the permission and noPermission message. This works the same as for the commands. Do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
size: 54
command: example
permission: mymenu.example
noPermission: '&cYou are not permitted to open this menu!'
Now we're gonna add the content to the menu.
You do this adding the section 'content' to the file. Then set the slot numbers as a sublist of the section. Because integers are not strings, you will have to put the numbers between single quotes: '. Slot numbers are starting from 1 NOT 0 (the first actual bukkit slot).
Do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
size: 54
command: example
permission: mymenu.example
noPermission: '&cYou are not permitted to open this menu!'
content:
  '1':
  '2':
  '3':
Now you can set the material, material data, material amount, displayName and lore of the actions. For a list of material click here. Please note that these items are 1.12-. For 1.13 material, click here.
If you are not on 1.13+, you can specify the item data. This will be ignored if you are using 1.13+.
You also have to set the item amount. This can be a number from 1-64. If you don't specify this, it would be 1.
The lore is optional. If you don't specify it, there will be no lore. But if you don't specify the displayName, the display name would be "&7item".
Do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
size: 54
command: example
permission: mymenu.example
noPermission: '&cYou are not permitted to open this menu!'
content:
  '1':
    material: STONE
    data: 2
    amount: 1
    displayName: '&6Slot 1'
    lore:
    - '&7This is the first line of the lore'
    - '&7This is the second line of the lore'
  '2':
    material: WOOL
    data: 6
    amount: 1
    displayName: '&dSlot 2'
 
You're almost done! The last thing you have to do is set the left_click_actions and right_click_actions. You can guess what it does :)
You can use all actions that are specified in the actions list. If you want to open another menu when clicking, do not use [close] in your actions, or specify it BEFORE you open the new menu with [menu].
Do it like this:
Code (exampleyml (Unknown Language)):
title: '&b&lMenu of %player%'
size: 54
command: example
permission: mymenu.example
noPermission: '&cYou are not permitted to open this menu!'
content:
  '1':
    material: STONE
    data: 2
    amount: 1
    displayName: '&6Slot 1'
    lore:
    - '&7This is the first line of the lore'
    - '&7This is the second line of the lore'
    left_click_actions:
    - '[msg]&7You left clicked the first slot'
    - '[close]'
    right_click_actions:
    - '[msg]&7You right clicked the first slot'
    - '[close]'
  '2':
    material: WOOL
    data: 6
    amount: 2
    displayName: '&dSlot 2'
    left_click_actions:
    - '[msg]&7You left clicked the second slot'
    - '[close]'
    right_click_actions:
    - '[msg]&7You right clicked the second lot'
    - '[close]'
 
In v2.7.0 and above, there are open and close actions for the menus that will be fired once a player opens/closes a menu. You can specify this in the menu file using openActions and closeActions . Do it like this:
Code (YAML):
title : '&b&lMenu of %player%'
size
: 54
command
: example
permission
: mymenu.example
noPermission
: '&cYou are not permitted to open this menu!'
openActions
:
- ' [ msg ] &aYou opened the example menu'
closeActions
:
- ' [ msg ] &cYou closed the example menu'
content
:
  '1'
:
    material
: STONE
    data
: 2
    amount
: 1
    displayName
: '&6Slot 1'
    lore
:
   - '&7This is the first line of the lore'
    - '&7This is the second line of the lore'
    left_click_actions
:
   - ' [ msg ] &7You left clicked the first slot'
    - ' [ close ] '
    right_click_actions
:
   - ' [ msg ] &7You right clicked the first slot'
    - ' [ close ] '
  '2'
:
    material
: WOOL
    data
: 6
    amount
: 2
    displayName
: '&dSlot 2'
    left_click_actions
:
   - ' [ msg ] &7You left clicked the second slot'
    - ' [ close ] '
    right_click_actions
:
   - ' [ msg ] &7You right clicked the second lot'
    - ' [ close ] '
 

[​IMG]
The custom items have the same possibilities as the items in the menu and work the same. Below is a list of all things you can change of the item.
Two example items are included by the plugin and will be put in the plugin folder once the plugin is running.

permission :
Description: The permissions needed to open the menu
Type: String
noPermission :
Description: The message that will be sent when a player doesn't have the specified permission to open the menu
Type: String
cooldown :
Description: The cooldown amount in ticks before the player can open the menu again. (1 second = 20 ticks)
Type: Long
cooldownMessage :
Description: The message that will be sent when a player is on cooldown for that menu. Use %time% for the remaining time
Type: String
actions :
Description: A list of actions that will be performed when clicking the item
Type: String List

material :
Description: The material type of the item. If you have the HeadDatabase plugin, you can set this item to a custom head using "hdb-<headID>". Replace <headID> with the ID of the head. You can also set a player head using "head-<player>". Replace <player> with the player's name (this also supports the placeholder %player%)
Type: Material Type
Required: True
data :
Description: The data of the item (for 1.8-1.12 only)
Type: Byte (Integer)
displayName :
Description: The display name (title) of the item
Type: String
Required: True
amount :
Description: The amount of the item
Type: Integer
durability :
Description: The durability of the item
Type: Short (Integer)
lore :
Description: The lore of the item
Type: String List
itemFlags :
Description: The item flags of the item. Click here for a list of item flags
Type: ItemFlag List
enchantments :
Description: The enchantments that should be applied to the item. To set the enchantment level use the format ENCHANTMENT:LEVEL (DURABILITY:3). Click here for a list of 1.12.2 enchantments.
Type: Enchantment List
unbreakable :
Description: Whether the item should be unbreakable or not
Type: Boolean
itemOptions :
Description: All custom options that should be applied to the item. Below is a list with all item options
Type: String List
slot :
Description: The slot the item will be put in if specified. If you don't specify this, it will just be added to the inventory. Slots start from 0
Type: Integer

The custom item's name is the section's name. Example:
Code (YAML):
diamond : # item name
  material
: DIAMOND
  slot
: 3 # actually slot 4
Item Options:
DISABLE_INVENTORY_MOVING :
Description : This disables the item from being moved around the inventory.
DISABLE_DROP
Description : This disables the item from being dropped.
DISABLE_BLOCK_BREAK
Description : This disables breaking blocks with the item in the hand.
DISABLE_BLOCK_PLACE :
Description : This disables the item from being placed. This is only necessary when the item is a block.
DISABLE_CONSUME :
Description : This disables the item from being consumed by the player. This is only necessary when the item is food.
DISABLE_PVP :
Description : This disables PvPing with the item in the hand. There will then no damage be given.
[​IMG]
Follow this guide to turn your custom items into join items.
It's really easy to use, and you can ditch CustomJoinItems.

First, create your custom item in the customitems.yml file. Read the explanation above to learn how. Make sure to specify the slot of the item. You also have to make sure that you add the 'DISABLE_INVENTORY_MOVING' and the 'DISABLE_DROPPING' itemOptions.

Most join items perform commands for eg a join menu. You can also create a join menu with Additions.
Just add the command/menu or whatever other action to the action list of the item and when they click it, it will all happen :)

Once you've done all that, you go to the config.yml. There you add the [citem] action to the action list of the join event. Do it like this:
Code (YAML):

join
:
  actions
:
 - ' [ citem ] youritem'
  - ' [ msg ] &bWelcome to our server, %player%!'
 
Make sure to replace 'youritem' with the name of your custom item.

Well, that was all. Just reload the plugin, join and you will see the item in your inventory in the specified slot. You won't be able to move or drop it.
[​IMG]
If you have PlaceholderAPI installed, you can use their placeholders.
If you have not, you're lucky! We've implemented some custom placeholders as an alternative for the PlaceholderAPI ones.

If you have MVdWPlaceholderAPI installed, you can also use their placeholders.

Per-Event placeholders:
%dropped% returns the item type of the dropped item. For the drop event only.
%fished% returns the fish type of the caught fish. For the fishing event only.
%killed% returns the player name when using in the kill event. It returns the killed entity's type in the entitykill event.
%item% returns the item's displayName. For the itembreak event.
%consumed% returns the consumed item's displayName. For the consume event.

Other languages:
Spoiler: Dutch
%gevallen% is het item type van het gedropte item. Alleen voor het drop event.
%gevist% is het type vis dat is gevangen. Alleen voor het fishing event.
%vermoord% is de naam van de vermoordde speler als je het in het kill event gebruikt. Het is het type entity/wezen wanneer je het in het entitykill event gebruikt.
%item% is de weergave naam van het item. Alleen voor het itembreak event.
%opgegeten% is de weergave naam van het gegeten item. Alleen voor het consume event.

All-over placeholders:
%player% returns the player's name.
%player_name% returns the player's name.
%player_gamemode% returns the player's gamemode.
%player_x% returns the player's x coord.
%player_y% returns the player's y coord.
%player_z% returns the player's z coord.
%player_world% returns the player's world name.
%player_uuid% returns the player's UUID.
%player_is_op% returns whether a player is opped or not.
%player_health% returns the player's health.

Spoiler: Dutch
%speler% is de naam van de speler.
%speler_naam% is de naam van de speler.
%speler_gamemode% is de gamemode van de speler.
%speler_x% is het x-coordinaat van de speler.
%speler_y% is het y-coordinaat van de speler.
%speler_z% is het z-coordinaat van de speler.
%speler_wereld% is de naam van de wereld waar de speler in is.
%speler_uuid% is het UUID van de speler.
%speler_is_op% is of de speler op heeft.
%player_health% is de speler z'n health/gezondheid.

[​IMG]
[command]:
aliases: [player]
description: This will perform a command as the player itself.
example: '[player]say hi'
[message]:
aliases: [msg]
description: This will send a message to the player. Supports color codes.
example: '[message]&aWelcome &l%player%'
[console]:
description: This will perform a command as the console.
example: '[console]give %player% stick 1'
[title]:
description: This will send a title to the player. Use \n to switch to the subtitle. Supports color codes.
example: '[title]&a&Welcome!\n&7%player%'
[actionbar]:
aliases: [action]
description: This will send an action bar to a player. Supports color codes.
example: '[actionbar]&6Welcome to our server!'
[json]:
aliases: [jsonmessage], [jsonmsg]
description: This will send a JSON message to a player. Use a generator like this to create JSON messages. Do not include the ["", and ] part of the JSON. So start with the {, and end with the }.
example: '[json]{"text":"Text","color":"green","hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"More text"}]}}}'


[everyone]:
description: This will perform the action for all online players instead of the event player only.
example: '[msg][everyone]&a%player% joined the server!'
[center]:
description: This will center the text of a message. This only works with the [message] action.
example: '[msg]&aThis is a centered message'
[language]:
description: This will only perform the action if the player has a certain Minecraft language/locale. You can find a list of Minecraft locales here . If the player does not have that locale, the action will be skipped for that player. This action works with [everyone] . Use [language=""] as a base, then put the target locale between the double-quotes.
example: '[msg][everyone][language="en_us"]&aYour language is English (United States)'
[delay]:
description: This will delay the action with the specified amount of ticks (1 sec = 20 ticks). Use [delay=""] as a base, then put the delay time, in ticks, between the double-quotes.
example: '[msg][delay="100"]&7This message is 5 seconds delayed.'
[connect]:
description: This will connect the player to another server. This can only be used on a bungeeCord server and the specified server must be connected to it. The names of the server are the same as the ones in the config.yml on your bungee host.
example: '[connect]pvp'
[money]:
description: This will deposit/withdraw money to/from a player's balance. Vault must be installed to use this.
example: '[money]10', '[money]-10', '[money]+10'
[menu]: :
description: This will open a custom menu. Just add the menu name (without .yml) after it.
example: '[menu]example'
[close]:
description: This will close the player's inventory. Do not use this after you specified the [menu] action. The menu will not open then.
example: '[close]'
[permission]:
description: This checks if the player has the specified permission and discontinues the action if the player doesn't have it.
example: '[msg][permission="myperm"]&aYou have the specified permission'
[vgroup]:
description: This checks if the player is a member of the specified group. Vault is required to use this action. Also, a permission plugin is needed which should be supported by Vault.
example: '[msg][vgroup="donator"]&dYou are a donator'
[chance]:
description: This adds chances to the action. This should be a percentual amount between 0-100. If you set it to 50, there will be a 50% chance for the action to be performed.
example: '[msg][chance=50]&aThere is 50% chance of getting this message'
[sound]:
description: This plays a sound for a player. Make sure to play sounds matching your server version.
example: '[sound]NOTE_PLING'


[​IMG]
[​IMG] [​IMG]

[​IMG]

Commands

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Additions | Free version | Menus, items, commands & more | 1.8x - 1.14x is a free Minecraft Java mod. Compatible with Minecraft 1.8, 1.9, 1.10, 1.11 and newer. Downloaded 20,646 times (via Spigot). Download it and open it directly in the game.

Explore more