ItemJoin icon

ItemJoin -----

Get custom items on join.




ItemJoin-v6.1.1-RELEASE​


Changelog

Added:
  • 1.21.2/1.21.3 Support (0953236)
  • first-wild trigger (1ac6f2d)
    • Gives the item once upon the player joining for the first time. It will also give the item to the player every time they respawn as long as they didn't respawn at a bed or anchor.
  • respawn-point trigger (b073f20)
    • Gives the player the item upon respawning as long as they respawned at a bed or anchor.

Fixed:
  • memory usage (19500db)
  • respawn trigger(s) (4d99408)
  • deprecated compatibility (cd7e1a8)
  • revealing ghost items (deeaec3)
  • CarbonSpigot Support (38b34c7)
    • Implements a fallback for when the #isEmpty method is missing from the Bukkit Inventory.
  • Menu ConcurrentModificationException (2ba14c3)
  • null item when animating (c5105b4)
    • Sometimes animations would cause an item to return null.
  • invisible menu items (f8edb6f)
  • disabled regions (9f6364d)
  • Metrics Logging (6e0b69e)
    • Setting Metrics-Logging to false in the config.yml ended up doing nothing because the value wasn't being checked programmatically.
  • menu saving (3e26789)
    • Trying to save a modified or new custom item via /itemjoin menu would incorrectly fail when an item count or command cost was not specified.
  • region messages (8e510a6)
    • Region triggers for custom items were causing a lot of message spam for overwrite or inventory full failures in addition to debugging messages. This would happen every time the player moved which was not intended.
  • Active-Commands first-join (1475481)
    • The first-join trigger/executor was being ignored for Active-Commands defined in the config.yml. Proper function is now restored, first-join will only execute once per-world.
  • slot clearing blacklist (d86298f)
    • Defining custom slots to be blacklisted from clearing as in; HELMET, CHESPLATE, LEGGINGS, BOOTS, and OFFHAND would be ignored.
  • SkinsRestorer API (3eee1f8)
    • When SkinsRestorer is in proxy mode or stuck loading it throws errors when initializing.

Changed:
  • renamed respawn-point to respawn-wild (3bdefee)
    • This naming scheme was counter intuitive and confusing.
  • GitLab to Jenkins (b9ab699)


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Nov 24, 2024

ItemJoin-v6.1.0-RELEASE​

Notice: This release contains a major change to item permissions. If you define a custom permission-node for an item, this will be required in order to get the item, ignoring any permission settings in the config.yml. It is now expected that by setting a custom permission-node you actually want to have permissions be required for that item.

Changelog

Added:

  • 1.21 & 1.21.1 Support.
  • Folia Support.
    • Folia is a new fork of PaperSpigot that adds regionized multithreading to the server.
  • no-clear itemflag
    • Prevents the player from using any plugins /clear commands to remove the custom item.
    • Executing /clear will now clear all items excluding any custom items with the no-clear itemflag.
  • %state% placeholder for toggle command messages.
  • erase-drops itemflag
    • This itemflag entirely removes the item from the player when they try to drop it or on-death.
    • Unlike the self-drops counterpart, the item is not given back.
  • Polish Language translation.
  • selectable-delay
    • You can modify your selectable itemflag individually for each item by specifying selectable-delay: 1 on your item to increase the amount of time the user is allowed to have the item selected before they are forced to unselect it.
    • By default, the selectable itemflag no longer has a delay, you can add this delay to increase the amount of time the user can select the item. For each numerical value (1..., 2..., 3...) adds 10 ticks, so 1 is half a second, 2 is a full second, 4 is two seconds, etc.
  • disabled-regions
    • This was added as a replacement for region-priority, the idea of this is to allow the specification of enabled-regions while having the ability to disable specific regions inside the enabled-regions. There are other use cases for this but it was the main reason for being added.
    • This prevents region-enter and region-access items from being given in those regions, (region-access will have them auto-removed).
    • This also allows region-leave and region-egress items to be given in those regions (works best if they are a sub-region inside an enabled-region)
  • on-join item command
    • You can now add on-join item commands to custom items.
    • This will only trigger if the player already has the custom item while joining the server, not after getting the item.
    • This respects and waits for AuthMe authorization.
  • item command permissions
    • Every command action can have its own permission or set of permissions required to execute the command. In the example below I use interact, but this can be anything like interact-right, interact-left, inventory, inventory-creative, etc.
    • You can use a ! symbol in front of the permission to invert the condition, making the permission strictly not required to execute the command. If they have that permission and it's not set to false then they will not be allowed to execute the command.
    • Example;
Code (Text):
    interact:
    - 'console: eco give %player% 5000'
    interact-permission:
    - '!itemjoin.group.owner'
    - 'itemjoin.group.newbies'
    interact-fail-message: '%prefix% &cfailed to execute the interact-right commands.'
 
  • Inverted permission-node on custom items.
    • You can now use the ! symbol to invert the permission requirement from permission-node on custom items.
    • Example; permission-node: '!fish.cakes' - players without this permission will be given the item.
  • Entity selectors can now be used in plugin commands.
    • Example; /itemjoin get item_1 @a[team=afk]
  • commands-cost can now accept placeholders and double values.
    • Example; commands-cost: '%player_deaths%' - increases the cost to execute a command each time the player dies.
    • Example; commands-cost: 1.5 - will charge exactly $1.5 from the economy balance.

Fixed:

  • AuthMe authentication.
    • AuthMe authentication was bypassed when any region trigger was defined.
  • stackable itemflag duplication.
  • self-drop itemflag
    • With an open GUI menu from any plugin you could drop the item from your inventory via your cursor.
  • placement itemflag
    • Containers can now be opened when the placement itemflag is present.
    • Previously the itemflag would prevent containers like chests from being opened.
  • item conditions
    • If a placeholder had a colon inside it, the conditions would fail to parse.
  • AutoCraft bug
    • Inventories smaller than 4 slots would cause the AutoCraftEvent to break, for example a furnace.
  • Data loading
    • Added a short delay to allow items to properly generate before finalizing the data.
  • fireworks use-cooldown
    • The use-cooldown would fail to function with fireworks if the player was actively flying with an Elytra.
  • region triggers debugging
    • Disabled "player has item" debug messages for region triggers as they are not necessary and are quite spammy.
  • /ij get fail count
    • Using /ij get, getAll, or getOnline with a non-ItemJoin item occupying the custom item slot would incorrectly say the player has all items.
    • Now the number of failed items to be given will be displayed if the custom item slot is occupied.
  • accidental removing of vanilla recipes.
    • Furnace, stone cutter, and enchant recipes were accidentally being removed on /ij reload resulting in them being non-functional.
    • The way recipes are removed has been changed to only remove ItemJoin recipes.
  • crafting items death-keep and death-drops
    • Crafting items were not being returned despite having the death-keep itemflag defined.
    • Crafting items were not being cleared if death-drops was defined.
  • death-keep breaking item animations.
  • death-keep online check.
  • death-keep itemflag with multi-slots
    • Multi-Slots were not being properly restored, instead they were being stacked.
  • AuthMe authentication
    • If a user hasn't logged in but hovered over a slot that previously had an ItemJoin item, the Item Commands could be triggered.
    • AuthMe does not remove items from the player inventory, they simply are made invisible (ghosts).
  • Illegal characters in chat.
    • Only occurred with alternative versions of Spigot, like PaperSpigot.
    • The issue typically was with using chat colors in item commands.
  • /ij get enabled-worlds checks.
    • The get commands were not checking to see if the player was in an enabled world for the item.
  • Clear-Items region clearing.
    • Items were constantly being cleared and restored instead of only doing so once.
    • The original functionality of Region-Enter clearing has been restored.
  • /ij dump (paste api)
    • Servers would crash in some geo-blocked locations.
  • count-lock bug with projectiles.
    • 1.20.5/1.20.6 broke the built-in API for blocking item consumption so a custom method has been added to replace this.
  • inventory-creative commands.
    • A bug would occur when shift+clicking "Destroy Items" in creative mode while having an item defined with inventory-creative commands.
    • Clicking "Destroy Item" would cause any item in the player inventory with inventory-creative defined to execute.
  • Check for updates bug.
    • Major version jumps would not be handled properly causing the updater to get confused.
  • Purge commands.
    • Trying to purge an entire data-set (not specifying a player) would result in a "command not found" error.
  • ChestSort API double-clicking bug.
    • Would cause custom items to duplicate when sorting.
  • Concurrent Exceptions.
  • Permission pages.
    • Would list duplicates.
  • Many many miscellaneous legacy Minecraft bugs.

Changed:

  • selectable itemflag.
    • Removed delay and added other special cases like click-dropping items and giveTo triggers.
  • In /ij menu the CustomModelData definition will now show a preview of the model data.
  • Rewrote timers to function better.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Sep 4, 2024

ItemJoin-v6.0.7-RELEASE

Changelog

Added:
  • Permission-Switch trigger.
    • Adding this trigger to a custom item will allow it to be given at the moment the permission is granted to the user.
    • If the permission is revoked the custom item will be automatically removed.



Fixed:
  • 1.17.0 - 1.17.1 bug with not being able to join the server when defining a custom book item.
  • JSON Books being non-functional for Legacy Minecraft versions 1.8 - 1.20.4.
  • Menu would break if items are empty or null in the items.yml.
  • Menu region-egress trigger being broken.
    • Was incorrectly referenced as region-engress instead of region-egress.
  • Menu disable triggers not removing all triggers.
    • A few new trigger values were missing instead, the list is just cleared rather than being checked.
  • Legacy Minecraft animation spam when updating the Player Inventory.
    • Even if no action was taken to the player inventory a force update was incorrectly triggered.
  • Legacy PotionMeta bug.
    • ItemMeta was incorrectly specified in the reflection.
  • Another VirusTotal false-flag.
    • This is very unlikely to happen again, the method has been entirely rewritten.
  • commands-cost bug.
    • Users with a balance in the negatives (less than zero) would not be allowed to execute commands regardless of commands-cost being specified.
    • commands-cost being set to zero or not defined now allows the commands to execute properly.



Changed:
  • Dump URL is now interactable.
    • Easier to copy the URL.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jun 3, 2024

ItemJoin-v6.0.6-RELEASE

Changelog

Added:
  • on-drop item command.
    • If you drop an item with on-drop command(s) specified these will execute.
    • Example;
Code (Text):
  example-item:
    id: DIAMOND_SWORD
    slot: 0
    on-drop:
      - 'message: &cCome back! You left me behind!'
  • model-data, durability, and data saving using the in-game menu.
    • Previously this information was not saved when trying to import an existing item.
  • Snapshot update checking.
    • If you ever download a snapshot from our integration server ItemJoin now checks for updates to see if a new snapshot is available.
    • If a snapshot update is found it can be automatically fetched via /itemjoin upgrade.
    • Additionally, if a snapshot is outdated because it has officially hit the release stage, you will be moved off of the snapshot branch to update to the official release. You will not be automatically moved to the next snapshot branch (Aka v6.0.6 to v6.0.7). If you wish to move to the new snapshot versioning you will need to manually download it. This is done to encourage updating to the official release since initial snapshots after an official release are typically unstable.

Fixed:
  • Bug with custom items being held in a cursor was not being removed.
  • Trigger conditions being erased when saving using the menu.
  • MCAntiMalware false-flag bug.
  • VirusTotal false-flag bug.
  • World-switch null item bugfix.
  • Item Statistics being lost when reloading (Enchantments, Placeholders, etc).
  • no-hat itemflag bugfix.
    • If this was enabled on the item and you typed in chat or executed a command that contained the characters hat the message or command would be blocked.
    • EX; What are you doing? would be blocked due to hat existing inside what.
    • Now supporting types are defined, currently EssentialsX /ehat, CMI /cmi hat, and General /hat are currently blocked, more can be added if needed in the future.
  • Null animations bugfix.
    • Items could continue to try to animate even when the player was offline or the item didn't exist for the player.
  • Death-Chest / Tombstone plugin bugfix.
    • death-drops / death-keep itemflags now properly prevent the item from being stored in a death chest from plugins like AngelChest.
  • Custom consumable potion effects bugfix.
    • These were functioning outside their defined enabled-worlds.
  • Null crafting items bugfix.
  • NMS bugfix.
    • The NMS checker would always think it was running a developer version.
    • This function exists to alert the player if they are using ItemJoin on a server version newer than what ItemJoin has been compiled and tested against.
  • Arbitrary item stacking bugfix.
    • Items with the arbitrary slot specified were not automatically stacking where applicable, instead they were always given in a new slot when using the /itemjoin get command.
  • Move-next itemflag bugfix.
    • If the player had already been given the item, it would try to move itself to the next available slot despite not needing to be given.
  • Limit-switch bugfix.
    • This was just straight-up broken and non-functional when WorldGuard was enabled on the server.
  • Limit-modes bugfix.
    • Old gamemode references were being used when respawning or switching worlds due to the item delay causing the item to be given (or not given) when it was supposed to.
    • Gamemodes are now properly checked at the exact time the item is to be given or removed.
  • Null NBT bugfix.
    • Some item types were being detected as ItemJoin items because they had NBT data even though it didn't match ItemJoin's data.
    • NBT data is now properly checked and verified.
  • Miscellaneous Menu bug fixes.
  • Bug with how items are displayed as loaded.
    • The incorrect number of items successfully loaded were listed in console at startup.
    • All items would be listed if they were successfully read instead of listing items that were successfully loaded into memory.
  • disposable itemflag duplication bugfix.
    • Items using the disposable itemflag but not having the item-store itemflag defined could result in item duplication when storing the item into chests or clicking on item-frames, armor stands, and other entities.
  • Major recipe bugfix for recipes with custom ItemJoin items defined.
    • These simply wouldn't work and would break the default crafting table functionality.


Changed:
  • death-keep itemflag.
    • This now functions more as a death-keep itemflag as the name implies.
    • Only items that currently exist at the time of death with the death-keep itemflag will be kept upon respawning.
    • If they do not meet the conditions to be given (enabled-worlds, enabled-regions, or limit-modes) the item will not be kept.
  • PlayerAutoCraftEvent whitelisting.
    • Plugins that utilize the PlayerAutoCraftEvent to open GUI menus can now request to be added to the whitelist.
  • Region triggers are now handled differently.
    • Instead of checking the regions when entering/leaving them the regions are always checked on player movement every 10 ticks.
    • This may result in higher timings but this makes the triggers more accurate reducing bugs and glitches.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, May 28, 2024

ItemJoin-v6.0.5-RELEASE

Changelog

Added:
  • dynamic-count itemflag.
    • Automatically sets the items count back to its original defined stack size defined in the items.yml.
    • The dynamic or animate itemflag must be defined for this to function.
    • This was originally a feature by default but now must be specified via this new itemflag.



Fixed:
  • SkinsRestorer API bugs...
  • Hex colors not properly functioning for custom book pages or the `messages` command identifier.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jan 14, 2024

ItemJoin-v6.0.4-RELEASE

Changelog

Added:
  • 1.20.3/1.20.4 Support.
    • Note that old JSON books will likely break!
    • Note that old items with the glowing itemflag will likely break!
  • splittable itemflag.
    • Items with this itemflag will not allowed to be "split" if their amount is greater than 1.
    • Blocks both right-click splitting and click-dragging.
  • damage command instance.
    • You can specify the amount of damage (durability) an item takes upon executing the command.
    • If durability hits 0 (or below) it will be automatically removed.
    • Example;
Code (Text):
example-item:
id: DIAMOND_SWORD
slot: 0
interact:
- 'damage: 15'
- 'message: &cI have lost 15 durability points!'
  • on-kill command executor.
    • Executes the command set upon killing a Player.
    • Example;
Code (Text):
example-item:
id: IRON_SWORD
slot: 0
on-kill:
- 'message: &aYou killed a player!'
Fixed:
  • Null check bug fixes for Legacy Minecraft.
  • Java 8 support.
    • Some newer methods were accidentally implemented resulting in errors in Java 8.
  • Death-drops bugfix with multi-slots.
  • Major recipe bug that caused a server crash.
    • Typically only occurred if you had an item with the vanilla itemflag defined and tried to craft items.
  • Implemented fall-back toggle messages into the lang.yml files.
    • Furthermore the plugin prefix has been removed from custom toggle messages that are defined per-item.
  • CheckforUpdates bugfix.
    • Just wasn't working, accidentally hard-coded instead of checking config.yml.
  • GameProfiles/PlayerProfiles are now properly cached.
  • Auto Chat-Tab-Completion for the upgrade command. Was still set to autoupdate which no longer exists.

Changed:
  • enchantment: and enchantments: are now acceptable on an item.
    • Previously only enchantment: would function.
  • /itemjoin dump has been switched to a self-hosted paste alternative.
    • Pastebin has been dropped, mainly because of it being blocked in quite a few regions.
  • Relocated ChaosCore package to be directly inside the main package.
    • Fixes conflicts with other plugins using ChaosCore.

Removed:
  • Minecraft 1.7 support.
    • According to statistics, nobody is using this version and it was A PAIN to support.
    • There is no reason to be using this instead Minecraft 1.8 should be used to avoid combat mechanics...


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jan 2, 2024

ItemJoin-v6.0.3-RELEASE

Changelog

Added:
  • 1.20.2 Support
  • respawn-point trigger.
    • An item with the respawn-point trigger defined will ONLY be given if the player is NOT spawning in a bed, anchor, or spawn-point.
    • To further clarify, the item will be given if spawning randomly in the wilderness, or at a set spawn such as an EssentialsX spawn.
  • Italian Language by Ale1x
  • Latest SkinsRestorer Support.
  • Region triggers now support the auto-remove itemflag.
  • Armor Trim Support.
Code (Text):
  trim-test:
    id: DIAMOND_CHESTPLATE
    slot: CHESTPLATE
    trim-meta: LAPIS:COAST

Fixed:
  • Bug with enchantments not working after reload.
  • GameProfile bug fixes.
    • Designed a GameProfile caching system.
  • first-life itemflag bugfix.
    • Simply just wasn't working.
  • Item Recipe bugfix for Legacy Minecraft.
  • ProtocolAPI & TinyProtocol bugfixes.
  • Arbitrary slot bugfix for Legacy Minecraft.
  • JSON bugfix for Legacy Minecraft.
  • Bugfix for Book items in Legacy Minecraft.
  • Bugfix for global ItemMovement bypass.
    • Despite a bypass being set, all itemMovement was blocked.
  • Custom map image bugfix.
  • NMS Checker.
    • Using ItemJoin on a version of Minecraft NEWER than the version it was compiled for will now properly throw a not-supported warning.
  • Arbitrary slot bugfix for get and getall commands.
    • If one of the listed arbitrary slots were missing, it would say you had all items despite missing a defined slot.
    • Now all slots will be properly filled.

Changed:
  • Reformatted a lot of the major code structure.
  • Implemented a "query" test in the menu.
    • Currently only setting the name of the item triggers the new query menu.

Removed:
  • BetterNick dependency support.
    • It's a dead plugin that can't be downloaded anymore, use NickAPI instead.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Nov 19, 2023

ItemJoin-v6.0.2-RELEASE

Changelog

Added:
  • 1.20/1.20.1 Support
  • ALLAY support to the item-store itemflag.
    • ALLAYs will no longer be able to take your item if the item is using the item-store itemflag.
Fixed:
  • VirusTotal (False Flag) bugfix.
  • Major SQL/Database bugfixes.
  • Legacy skull items bugfix.
Changed:
  • The glowing itemflag will now only register the glowing enchantment when the itemflag is actually used.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Aug 16, 2023

ItemJoin-v6.0.1-RELEASE

Changelog
Fixed:
  • Major bug preventing the SQL data from being loaded (breaking multiple features).
  • Enchant glowing bug on legacy Minecraft versions.
  • Database purging bug.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, May 1, 2023

ItemJoin-v6.0.0-RELEASE

Changelog
Added:
  • Minecraft 1.19.4 Support.
  • NMS Check.
    • You will now receive a warning if you are using ItemJoin on an unsupported version of Minecraft.
    • This will cause the plugin to enter compatibility mode and attempt to function as normal (although not guaranteed).
  • PlaceholderAPI support for Enchantments.
  • Teleport trigger
    • You can now give players items upon teleporting to new locations.
    • This also applies to the Active-Commands in the config.yml.
  • /itemjoin dump
    • Thank goodness, I can finally debug bug reports.
  • hide-enchants itemflag.
    • This... hides enchantments :)
  • not-hat itemflag.
    • Prevents the item from being equipped via the /hat command.
    • This applies to any plugin which uses the /hat command.
  • ItemCommand executors to Active-Commands (config.yml).
    • All executors for items now function for Active-Commands excluding delay and swap-item for obvious reasons.
    • The only addition is Active-Commands support the first-join executor whereas ItemCommands do not.
  • Portuguese language (pt-lang.yml) thanks to DeskTecc.
  • ignoreErrors in the config.yml.
    • Setting this to true will prevent admins from receiving messages upon login and reloading about ItemJoin errors.
  • Grindstone to the item-modifiable itemflag.


Fixed:
  • A bug that made items from recipes lose their properties.
  • Bug that prevented crafting slots from being cleared using clear-items.
  • Bug with specific slots being able to bypass the item-modifiable itemflag.
  • 2x2 crafting recipe bugfix.
  • Items that are supposed to be in the player's crafting menu would be moved to the hotbar.
  • Misc NBT bugfix.
  • /itemjoin getall bugfix (console).
  • Server crashing bugfix.
  • Duplicate condition fail-messages being sent if more than one command was specified in a list.
  • Condition fail-messages being sent when using a command action that wasn't even sent...
  • ItemMap fetching bugfix.
    • Now more simple and more likely to return an ItemMap instead of null.
  • Enchantment level checking
    • If the level is detected to be below 1 it will automatically set the level as 1.
  • Animation / Dynamic bugfixes.
  • Major WorldGuard rework/bugfix.
  • ItemCommands bugfix.
  • on-equip bugfix.
    • Now properly only functions on right-clicking.
  • leather-color PlaceholderAPI bugfix.
    • Simply wasn't working at all...
  • Menu bugfixes.


Changed:
  • Major plugin recode.
    • Now implements the use of the "ChaosCore" API.
    • This should make updating the plugin easier as well as streamline updates across all of my plugins.
  • Default config.yml no longer uses the console executor to set players to creative, instead it is now permission-based.
  • ChestSort Support.
    • If the player instance returns null (cannot find the player) then the ChestSort event is ignored and ItemJoin items are allowed to be moved.
  • Model-Data now supports Placeholders.
  • Reworked potions, now they even get the proper potion skin related to their potion effect!

Removed:
  • Slot identifier from NBT Tags.
    • The items (node name) specified as the path of the item are used instead to identify the item features.
    • This is simply just no longer needed and causes unnecessary headaches.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Apr 30, 2023

ItemJoin-v5.2.5-RELEASE

Changelog
Added:
  • Minecraft 1.19-1.19.2 Support
  • Recipes now support multiple(s)
    • The "result" now uses the count specified on the item.
    • The ingredients to achieve the result now support adding a count, for example; I:IRON_INGOT:#3 would require 3 iron in the specified I slot(s).
    • When specifying a custom item (node name) in the ingredients, the custom items count will be used instead.
  • Chat prevent to the config.yml
    • You can now block players from sending messages in ALL worlds or specified worlds by enabling Chat in the prevent section.
    • Useful for using this with a Bungee Proxy plugin, typically in reference to CloudSync.
  • VANILLA clear type for the clear items section in the config.yml
    • This will clear only VANILLA Minecraft items from the players inventory.
    • Therefore this excludes all ItemJoin items from being cleared.
  • Implemented Listed Recipes
    • You can now list a set of recipes and ingredients for a "result" item.
    • The function is as follows, brackets indicate a list [] and the list is split via a # symbol.
    • Example items;
Code (Text):
    recipe:
      '1':
      - 'XAX'
      - 'DXB'
      - 'XCX'
      '2':
      - 'XEX'
      - 'FXF'
      - 'XGX'
    ingredients:
      - 'A:COAL'
      - 'B:IRON_INGOT'
      - 'C:DIAMOND'
      - 'D:EMERALD'
      - 'E:STRING'
      - 'F:BONE'
      - 'G:ENDER_PEARL'
  • NBT Properties Nesting/Listing Support.
    • You can now add nested or listed NBT Data to an item.
    • Example;
Code (Text):
  candestroy-item:
    id: DIAMOND_PICKAXE
    properties: 'CanDestroy:[minecraft:cobblestone#minecraft:dirt]'
  canplace-item:
    id: COBBLESTONE
    properties: 'CanPlaceOn:[minecraft:diamond_block#minecraft:stone]'
  random-item:
    id: DIAMOND_BLOCK
    properties: 'CanPlaceOn:[minecraft:emerald_block#minecraft:stone], CanDestroy:[minecraft:cobblestone#minecraft:dirt]'

Fixed:
  • Major Recipe bugfixes
  • WorldGuard bugfixes
  • ChestSortAPI bugfixes
  • ItemJoin Menu bugfixes
    • Mostly related to animated/dynamic names, lores, etc.
  • Triggers priority bugfix
  • SkinsRestorer bugfixes
    • If proxy mode is enabled, ItemJoin will disable SkinsRestorer support.
    • Proxy mode is currently not supported by SkinsRestorer's API so ItemJoin cannot properly fetch the skins from the Bungee server.
  • /itemjoin getall command bugfix
  • Region triggers bugfix
  • Limit-Switch trigger bugfix
  • fr-lang.yml bugfix
    • Setting the language to French would cause ItemJoin to break.
    • Thanks LymsMC!
  • Legacy data values bugfix


Changed:
  • Recipes now support legacy item ids.
    • Do note this will not work on versions of Minecraft above 1.13.
  • Updates SkinsRestorerAPI
  • ItemJoin Menu now organizes items in order in the modify menu
  • Animate/Dynamic itemflag performance improvements
  • Limit-Switch trigger now respects regions

[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Aug 28, 2022

ItemJoin-v5.2.4-RELEASE

Changelog
Added:
  • Minecraft 1.18.2 Support
  • Previous versions of ItemJoin do not function on 1.18.2.
  • ignoreDepend to the config.yml.
  • You can now specify a plugin or list of plugins for ItemJoin ignore hooking into such as AuthMe or WorldGuard.
  • This will need to be manually added to previously generated config files.
Code (Text):
General:
CheckforUpdates: true
Metrics-Logging: true
Log-Commands: true
ignoreDepend: NONE
Debugging: false
  • Support for Legacy ChestSortAPI versions.



Fixed:
  • Bugfix for Player Heads breaking including the loss of the skin texture.
  • Major bug fixes for recipes.
  • This includes a fix for using the same exact materials and same patterns for multiple recipes but having different NBT Data for each.
  • Protocol bugfix
  • Major WorldGuard bugfixes
  • WorldGuard items were essentially non-functional until /itemjoin reload was executed after the server had started.
  • Animation flicker bugfix, mostly for crafting slots.
  • Equip and unequip command bugfixes.
  • Vault bugfix.
  • Menu bugfix.
  • Bugfix for colors being removed from items when modifying them in-game.
  • Stackable itemflag bugfix.



Changed:
  • Specifying Chinese as the Language will now default to Simplified Chinese instead of Traditional Chinese.
  • There is now a permission check if specified for a recipe item.
  • Players will be required to have this permission in order to craft the recipe item.
  • Placeholders that result in integers are now supported by an items count.
  • Placeholders that result in a proper hex color or color name are now supported by an items leather-color.
  • An items count now has an upper limit of 127 (previously was 64).
  • Updated the Chinese language files to fix old translations.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, May 9, 2022

ItemJoin-v5.2.3-RELEASE

TLDR Video Changelog


Changelog

Added:
  • Support for Minecraft 1.18.
  • Support for 1.17+ remapped and non-remapped dev jars.
  • Toggle Commands.
    • You can now allow players to execute a list of command(s) to enable/disable a specific ItemJoin item for themselves.
    • The action `toggle:` must be defined followed by a command or list of commands.
    • You can also specify a `toggle-permission` so only certain players can toggle on/off the command, this does not apply to OP players.
    • This can be anything, such as `fish.toggle`, in the example I simply use `itemjoin.compass.toggle`.
    • You can also specify a custom `toggle-message` that is sent to the player when they execute the toggle command.
    • Example;
Code (Text):
    toggle:
    - 'compass'
    - 'toggle compass'
    toggle-permission: 'itemjoin.compass.toggle'
    toggle-message: '&7You have toggled your compass!'
  • `disabled-worlds` to custom items.
    • You can now specify specific worlds to disable instead of specifying worlds to enable.
  • JSON Text for message item command executor.
    • This acts exactly the same as JSON Books except now it works for the message item command executor.
  • Support for NickAPI.
    • Fixes bugs that may occur if a player is nicked with this plugin.
  • Dynamic worlds.
    • You can now specify a world (Prefix) followed by a `*` to dynamically enable all worlds or disable all worlds that start with that prefix.
    • Example; `enabled-worlds: world*` would enable the worlds `world, world_nether, world_the_end` since they all start with world.
    • Syntax; `prefix*`
  • hide-flags itemflag.
    • An item with this itemflag will have all its enchantments, attributes, unbreakable tag, etc hidden.
    • This was formerly known as the `hide-attributes` itemflag.
  • Support for 1.17's new `HIDE_DYE` ItemFlag.
    • The itemflag `hide-flags` now supports this.
  • Support for FlameCord.
    • The connection to CloudSync, not ItemJoin itself ...
  • Support for SlimeWorldManager.
  • Active-Commands can now be modified via the in-game `/itemjoin menu` under the config settings section.
  • Updated SkinsRestorer API to support the latest version.
  • Updated ChestSort API to support the latest version.
  • Updated the /itemjoin help messages to JSON hoverable and clickable text.

Fixed:
  • SQL Bugfixes.
  • Protocol bugfix.
  • Packet bugfix.
  • Async bugfix.
  • In-Game Menu bugfix.
  • un-equip/on-equip bugfixes.
  • Query command permissions bugfix.
  • RANDOM_LIST/RANDOM_SINGLE bugfix.
  • Skull-Textures containing URL bugfix.
  • item-store itemflag bugfix.
  • Weird issues occuring with multi-inventory plugins interacting with WorldGuard.
  • GeyserMC bugfix.
  • Magma bugfix.
  • TPS Leak bugfix.
  • First-World trigger bugfix.
    • If used as a trigger instead of an itemflag the JOIN trigger would not automatically enable itself, causing the first-world trigger to not function.
  • Force OP bugfix.
    • Plugins/Programs that would check ItemJoin's code would detect it as "Malware" because they cannot understand dynamic values.
    • The `op:` command identifier now checks if you are OP and if you are it will execute it via regular dispatch.
    • If you are not OP you will be set to OP via a static value, then removed from OP via a static value, preventing any malicious intent.
  • Blocks-drop bugfix.
    • Items that did not drop items (vanilla) would not drop custom items.
    • ItemJoin now checks if the item requires a pickaxe to break, if it does it checks for the tool otherwise it will drop the custom item regardless of existing block drops.
  • AuthMeAPI bugfix.
    • If force registration was turned off ItemJoin would not issue items despite not needing to register.
    • ItemJoin now fetches AuthMe's config file and checks the boolean value.
  • Item-Repairable bugfix.
    • A Grindstone was able to repair an item with this itemflag despite being blocked.
  • Commands permission bugfix
    • Denying permission for all commands including `itemjoin.use` would cause the plugin to break.
  • ExploitFixer solution.
    • If you use ExploitFixer and you have `itemsfix` enabled in their config.yml, ItemJoin will now scream at you until you disable it ...


Changed:
  • Using Legacy Materials now throws a soft exception and info messages.
    • If you use a numerical item id and/or data values instead of the proper string name in Minecraft 1.13+ it causes a major lag spike when these materials are attempted to be cached causing a drop in TPS.
    • These values should not be used in Minecraft 1.13+ so please use proper formatting.
    • Minecraft versions below 1.13 will remain unaffected and will benefit from numerical ids.
  • Altered Bungeecord support.
    • ItemJoin-Bungee has been renamed to CloudSync and contains many fixes so ItemJoin has been updated to reflect this.
    • The old ItemJoin-Bungee version will not function with this version of ItemJoin.
  • Swap-Item command behavior.
    • There were a few glitches that would occur.
    • There would be a visible delay where the item was entirely gone prior to giving the swap-item.
  • hide-attributes itemflag.
    • This flag used to hide all tags and enchantments, etc.
    • This itemflag now only hides attribute tags such as armor points and attack speed.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Dec 16, 2021

ItemJoin-v5.2.2-RELEASE

Changelog

Added:

  • Support for Minecraft 1.17.
    • Current support is now Minecraft 1.7 through Minecraft 1.17.
  • Support for Java 16.
    • Current support is now Java 8 through Java 16.
  • Database.prefix to the config.yml.
    • You can now change the default ij_ prefix for tables in your SQLite/MySQL database.
    • Do note, changing this does not transfer existing data.
  • %player_hit% placeholder.
    • This placeholder is specifically for item commands where a player is damaged such as on-hit.
  • Support for ItemJoin-Bungee
    • You can now execute any BungeeCord command as the executing item commands player via bungee:
    • Example (A friends plugin found on spigot);



Code (Text):

  example-item:
   id: DIAMOND
   slot: 0
   interact:
     - 'bungee: friends'
 

  • teleport itemflag for Arrows.
    • Teleport Arrows, adding this itemflag will make it so the player is teleported to the arrows' landing location when fired by a BOW or CROSSBOW.
    • If you want to add an effect you can add teleport-effect: ENDER_SIGNAL to the arrow item and it will be displayed when the arrow lands at its landing location.
    • If you want to add a sound you can add teleport-sound: ENTITY_ENDERMAN_TELEPORT to the arrow item and it will be played when the arrow lands at its landing location.
    • Example, (this works with ARROW and TIPPED_ARROW);



Code (Text):

  example-item:
   id: ARROW
   slot: 0
   itemflags: teleport
   teleport-sound: ENTITY_ENDERMAN_TELEPORT
   teleport-effect: ENDER_SIGNAL
 

  • death-keep itemflag.
    • Retains the custom item on-death so it will exist in the player's inventory upon respawn.
  • cancel-equip itemflag.
    • Prevents the Player from moving/placing the custom item into armor slots.
    • This allows the item to move freely excluding armor slots.
  • on-consume item command.
    • Executed when the player is able to "eat" / "consume" / or "use" the item.
  • on-fire item command.
    • Executed when the player fires an arrow from the bow item.
    • In 1.16+ you can add this to an arrow that if fired from a bow item will execute a command as well.
  • potion-effects for creating custom food items.
    • Similar to creating custom apples or tipped arrows, you can create custom foods using potion-effects including skull items with food skins.
  • HeldItem-Animationsto the config.yml.
    • Setting this to false will DISABLE the animate and dynamic itemflag while the item is being held in the player's hand.
    • Useful for preventing rapid updating of the player's hand animation.
    • (IF UPDATING) This will need to be added to the settings section of your config.yml in order to use this option.



Code (Text):

Settings:
  HeldItem-Animations: true
 

  • Default-Triggers to the config.yml.
    • If NO TRIGGERS are defined for an item, this will be the default trigger(s) selected to be used by the item.
    • By default, this is set to JOIN so if no triggers are defined you will get the item on join.
    • You can add any of the available triggers, these can be listed such as JOIN, RESPAWN, WORLD-SWITCH.
    • (IF UPDATING) This will need to be added to the settings section of your config.yml in order to use this option.



Code (Text):

Settings:
  Default-Triggers: JOIN
 

  • /itemjoin query <item> command.
    • This will display any available information about the custom ItemJoin item, including slot, permission, material, etc.
    • Adding the following to your commands section in your lang.yml will be required for this command to work properly.
    • Translated versions are already available if you are using a translated lang.yml. Simply delete your lang.yml and let it regenerate.



Code (Text):

commands:
  query:
   node: '&aNode: &e&l%item%'
   material: '&aMaterial: &e&l%item_type%'
   slot: '&aSlot: &e&l%item_slot%'
   permission: '&aPermission: %item_permission%'
   badSyntax: '%prefix% &cIncorrect usage! Syntax: /itemjoin query <itemname>!'
 

  • url- specification for skull-texture
    • You can now specify a DIRECT URL to the skull-texture map.
    • Typically this would be something resembling url-http://textures.minecraft.net/texture/955d611a878e821231749b2965708cad942650672db09e26847a88e2fac2946
    • If you use specifically textures.minecraft.net you can specify the ending texture bytes instead of the full URL resembling url-955d611a878e821231749b2965708cad942650672db09e26847a88e2fac2946
    • The URL can be either HTTP or HTTPS.
    • Example skull items;



Code (Text):

  skull1:
   id: PLAYER_HEAD
   skull-texture: 'url-13e8bbc8d174aecd6b46888fa63f9bade14b042e5e17063139d67f8e0163a38'
  skull2:
   id: PLAYER_HEAD
   skull-texture: 'url-http://textures.minecraft.net/texture/955d611a878e821231749b2965708cad942650672db09e26847a88e2fac2946'
 

  • Support for %player_uuid% placeholder for skull-texture
    • Specifying skull-texture: '%player_uuid%' will attempt to fetch the player's skin directly from Mojang.
    • Useful if you are unable to have the spigot API fetch the skull-owner directly.
  • Dynamic pages for /itemjoin list
    • If you have a lot of items (exceeding 15 items) there will now be multiple /itemjoin list pages so they do not get cut-off.
  • Support for ProtocolLib.
    • If ProtocolLib is found on the server, TinyProtocol will be automatically disabled and ProtocolLib will be utilized.
    • It is highly suggested to use ProtocolLib if you are using crafting slots, especially if you are encountering issues with crafting slots.




Fixed:

  • Bugfix for the RETURN config option.
  • Bugfix for inventory-close itemflag on Crafting slots.
  • Bugfix for crafting items being given with an open inventory resulting in duplication.
  • Bugfix for capitalized command permissions.
  • Bugfix for glitching crafting items with autosave.
  • Performance increases, item commands, and item animations are now run aSync.
  • WorldGuard bug fixes.
    • If the user logs out and is teleported outside/inside a region while offline the items will still be given/removed.
  • /ij upgrade command now has its permission itemjoin.upgrade properly defined.
  • Crafting alias'
    • C[1], C(1), and CRAFTING(1) now function as alternative alias' to CRAFTING[1]
  • UI Bugfix, not being able to create or save custom items on Legacy Minecraft.
  • Bugfix for DataTags with Legacy tagging.
  • Bugfix for Prevent actions recognizing world as being the same as world_nether.
  • Bugfix for Global InventoryModify not blocking Offhand swapping.
  • Bugfix for duplicate item command execution if a random sequence is specified.
  • Bugfix for command interactions in ADVENTURE mode with other menu plugins.
  • A custom items count is now recognized if the count boolean is locked.
  • All cooldowns including item commands are now properly GLOBAL rather than per-world.




Changed:

  • Slot requirement has been removed.
    • If a slot is not defined for an item it will default to Arbitrary.
    • If the Arbitrary slot is defined in the /ij menu then it will not be saved to the items.yml since it automatically defaults.
    • This officially makes it so the only requirement to create a custom item is to define an id (material) and it will be given.
  • Enabled-Worlds now defaults to ALL or GLOBAL if not defined.
    • If the enabled-worlds is set to ALL or GLOBAL in the /ij menu then it will not be saved to the items.yml since it automatically defaults.
  • First-Join/First-World/First-Life/IP-Limits logic.
    • If these triggers were removed from an item after they were given to a player they would still function instead of having their database data ignored.
    • If a player gets an item under these conditions and then the condition is removed from the item, it will now correctly be given again.
  • use-cooldown now supports the placement of blocks and entities.
    • Example, If an item material is set to be a BOAT and you add a use-cooldown then the boat can only be placed into the water when the cooldown is complete.
  • on-hit item commands now support Projectiles.
    • Examples; ENDER_PEARL, EGG, FISHING_ROD
  • Updated Metrics to latest version.
    • Reduces file size and TPS usage.
  • Major Async SQL tweaks.
    • SQL statements are now run in single ASYNC batches in a single thread in order.
    • Prevents overlapping or database glitches and increases performance.
  • Tweaked First-Join, First-World, and First-Life to have better compatibility with interchangeable triggers.
    • Example; adding first-join and specifying region-enter will not give the item on first-join, rather it will give the item when the player enters the enabled-regions for the first time.
  • Item Commands are now properly synchronized so they are executed in order SEQUENTIALLY.
  • Updated isPlayer() checklist.
    • Most fake player or NPC plugins will now be properly recognized so they will not be given custom items or impact performance.
  • Refactored potion-effect to be called potion-effects.
  • inventory-modify itemflag now prevents right-clicking to auto-equip armor.
  • Updated Optional Dependencies.




Removed:

  • Hikari
    • Absolutely the worst API for handling SQLite and MySQL.
    • I wrote my own method and implemented it so there are now some major database performance increases and bug fixes.




[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jun 16, 2021

ItemJoin v5.2.1-RELEASE​

NOTE: Please read the changelog below for the prior version v5.2.0 as it contains MAJOR changes for existing users.

Changelog

Added:
  • New Dutch Localization.
    • Simply change the Language in your config.yml to `Dutch` and the `nl-lang.yml` file will be generated.
    • Thank you Marijn2341
Fixed:
  • Random Hikari Leak.
  • Major Database bug.
    • Database wasn't even being used/connected causing first-join, map-ids, etc to fail.
Changed:
  • Hikari Leaks are now sent as debug messages rather than a large stack trace.
    • Leaks are automatically killed if they exceed the set threshold.







------------------------------------------------------------------------------------------



[​IMG]

WARNING: Any existing items.yml AND config.yml files will be automatically backed up and regenerated to the updated version 8, please read the changes below in order to update your old items.yml and config.yml files. Item Commands formatting has changed!

Changelog

Added:
  • Support for Minecraft 1.16.5.
  • Items.yml has been updated to VERSION 8 and will regenerate.
  • Config.yml has been updated to VERSION 8 and will regenerate.
  • RETURN_SWITCH to the Clear Items Options.
    • If you define a set of worlds to clear items from when switching worlds if you have this option enabled and players return to a world where items are not cleared their inventory will be restored.
  • map-id is back.
    • You can now specify a map id for a custom map but leaving this undefined will allow ItemJoin to select a map id to use by itself.
    • Only define this if you know what you are doing or experience conflicts with another plugin.
  • Vanilla Map ID's
    • If you do not define a custom-map-image the map-id defined will now select the defined VANILLA map (or canvas rendered by another plugin).
  • Definable NBT Properties.
    • You can now define properties for each of your custom items.
    • You can define a single property or a list of properties separated by a comma.
    • Format is Identifier:Value and for clarification, these are called NBTTags.
    • Example;
      Code (Text):
      properties: 'TranslatableDisplayName:&aUltra &cItem, Slot:33'
    • This will add TranslatableDisplayName with the String value &aUltra &cItem and add Slot with the Integer value 33.
    • This is mainly useful for implementing features from other plugins.
  • Purge first-commands
    • The purge command now supports the first-commands table.
  • Shulkerbox item nesting.
    • You can now define EXISTING custom items inside a Shulkerbox.
    • Start by creating items as normal to be set as an ItemJoin item, except set the triggers to DISABLED. The only limits for these items are they need to be slots from 0 to 26, any smaller or larger will not work as shulker boxes are smaller than a player inventory. You can also use slot ARBITRARY any other custom slots will not work since there is no crafting inventory or armor slots.
    • These contents are the CONFIG NAME of the ItemJoin item you want to be set. The config names are what define the items, in the example, the shulker box is called shulker-item which is the config name, (not the item name).
    • Example;
Code (Text):
  shulker-item:
    id: BLACK_SHULKER_BOX
    slot: 0
    contents:
    - ultra-item
    - map-item
    - animated-panes
    triggers: join, respawn, world-switch
    enabled-worlds: ALL
  • You can now Mass Save your inventory into ItemJoin using the /itemjoin menu with the exact current slots of the player.
  • Error statements are now sent to admins on login or /reload if ItemJoin has a critical error occurred.
  • first-join trigger to the active commands in the config.yml.
  • Quit for clear-items in the config.yml.
    • Specifying true for all worlds or world names separated by commas will allow the player's inventory to be cleared when disconnecting from the server.
  • Region-Access trigger.
    • Gives the item when entering a specified region and removes it when exiting.
    • Note: Defining Both Region-Enter, Region-Leave will do nothing as you should use this new trigger instead.
  • Region-Egress trigger.
    • Gives the item when leaving a specified region and removes it when entering.
  • REMAIN command sequence for item commands.
    • If this is specified as a command sequence, the item will be required to exist in the player inventory for DELAYED commands to be executed.
    • If the item is removed from the player inventory before the commands finish executing the remaining commands will fail to execute.
  • on-damage item command.
    • When a player has the custom item in their inventory if the player damages an entity or the entity damages the player the command will be executed.
  • on-hit item command.
    • Executed when the player is holding the custom item and hits an entity or another player.
  • commands-sequence to the config.yml for Active Commands.
    • Currently you can specify SEQUENTIAL, or RANDOM_SINGLE, to execute the commands sequentially OR execute a single command line randomly.
  • Permission Blocking of Lang.yml Messages.
    • You can now define itemjoin.lang.LANGMESSAGE and set it to FALSE in your permissions plugin to prevent the lang message from being sent to specific players.
    • You must define both the "general", "category", and the node name of the lang messages.
    • Example; itemjoin.lang.commands.default.unknownCommand and set it to FALSE typically via :false
    • This will block players with this permission from receiving the unknown command message.
    • commands is the general, default is the category, and unknownCommand is the node name of the lang message.
  • Disposable Conditions
    • The item will only be removed from the player if the condition is MET, commands will execute regardless.
    • You can specify a fail message if the condition was not met, this is optional.
    • You can specify a single condition or a list of conditions, however in the list only ONE of the conditions needs to be MET.
    • Current conditional operands are EQUAL, NOTEQUAL, OVER, and UNDER -- Over and Under is specifically INTEGER ONLY conditions.
    • Remember to add the disposable itemflag for this to function.
    • Example;
Code (Text):
disposable-conditions:
- '%mypet_has_pet_treat%:equal:true'
- '%other_placeholder%:notequal:VALUE'
- '%other_placeholder%:over:300'
- '%other_placeholder%:under:700'
disposable-fail-message: '&cYou get to keep your item, lucky!'
  • Command Conditions
    • The item command will only be executed if the condition is MET.
    • You can specify a fail message if the condition was not met, this is optional.
    • You can specify a single condition or a list of conditions, however in the list only ONE of the conditions needs to be MET.
    • Current conditional operands are EQUAL, NOTEQUAL, OVER, and UNDER -- Over and Under is specifically INTEGER ONLY conditions.
    • Command conditions are defined as their action-condition as an example, the action being inventory-left would be inventory-left-condition.
    • Example;
Code (Text):
inventory-left-conditions:
- '%mypet_ishungry%:equal:true'
- '%other_placeholder%:notequal:VALUE'
- '%other_placeholder%:over:600'
- '%other_placeholder%:under:500'
inventory-left-fail-message: '&cYou cannot execute that command until you feed your pet more.'
  • Trigger Conditions
    • The item will only be given to the player upon performing the trigger and the condition is MET.
    • The /itemjoin get command(s) respect this condition and will not be given if they are not met.
    • You can specify a fail message if the condition was not met, this is optional.
    • You can specify a single condition or a list of conditions, however in the list only ONE of the conditions needs to be MET.
    • Current conditional operands are EQUAL, NOTEQUAL, OVER, and UNDER -- Over and Under is specifically INTEGER ONLY conditions.
    • Example;
Code (Text):
trigger-conditions:
- '%mypet_has_pet%:equal:true'
- '%other_placeholder%:notequal:VALUE'
- '%other_placeholder%:over:100'
- '%other_placeholder%:under:200'
trigger-fail-message: '&cYou need to summon your pet.'
  • All config.yml settings have been added to the /itemjoin menu.
  • All items.yml settings have been added to the /itemjoin menu.
  • /ij, get, getAll, and getOnline now have the alias' give, giveAll, and giveOnline.
  • Major errors or warnings that affect the plugin function are now sent to OP (admin) players upon joining the server.
  • Citizens Support.
    • Items are now only given to real players instead of being given to Citizens.
  • ChestSort Support.
    • Items that have the inventory-modify itemflag will now properly maintain their position even when sorted by ChestSort.

Fixed:
  • Major skull item changes, resolved Mojang API Authentication.
  • Bug with legacy skull items.
  • Bug with crafting items incorrectly dropping when death-drops were defined.
  • Major database fixes.
    • MySQL Database connections now use Hikari with Leak prevention.
    • SQLite is now also handled by Hikari to prevent the need to download a separate driver.
  • WorldGuard bug fix.
  • Vault bug fix.
  • Vanilla itemflag bug fix.
    • Itemflag wasn't being enabled despite being defined.
  • Consumable item bugs.
  • Async bug fixes.
  • Bugfix with ItemJoin Commands.
  • Protocol Handlers.
  • Having an outdated AuthMe version no longer breaks ItemJoin.
    • AuthMe will simply be ignored.
  • Placement duplication bug fixes.
  • Count-lock duplication bug fixes.
  • Various swap-item bugs.
  • on-receive bug fix when multiple slots are defined.
    • Will now properly execute the on-receive commands once per item node instead of once per slot set.
  • Major bug fix for Dependencies.
    • If they loaded but were classified as disabled, ItemJoin would break.
  • Potion duration is now correctly set using the /itemjoin menu
  • Duplication bug in creative mode.
  • inventory-modify itemflag now properly blocks Creative mode shift+click to DESTROY items.
  • Crafting items are now loaded properly from the Database
  • Item Commands cooldowns are now properly restored from the Database when reloading the config(s).
  • Limit-modes now properly function.
  • death-drops compatibility with DeathChest plugins.
    • Both the #getInventory and #getDrops instances now have the item removed.
  • Disposable fixes.
  • Overwrite fixes.
  • Dependencies overload when registering the plugin at startup.
  • UUID bug fix for unsupported MC 1.7.
  • Synchronized Item Commands.

Changed:
  • Count-lock now supports Arrows when using a Bow or Crossbow
  • Count-lock now supports consumable items.
  • item-store now supports brewing stands.
  • death-drops itemflag and global prevent will now be disabled if gamerule keepInventory is enabled.
  • Recipes can now have custom items defined in them by specifying the item node instead of a material name.
  • /ij permissions pages are now dynamically generated to have a max of 15 permission nodes per-page.
  • Major database changes.
    • Database is now handled using DataObjects.
    • Tables have been refactored to remove the Player_Name category.
  • slot now supports Placeholders.
  • table is now redefined as database in the config.yml.
  • /itemjoin autoupgrade is now defined as /itemjoin upgrade
  • Item Commands no longer use the commands identifier to be defined.
    • If your item has the commands identifier it will need to be removed for items to function again.
    • Do make sure you implement proper YAML formatting as when you remove the commands node there are two spaces in front of the interact-right node you need to remove.
    • So commands which resembled;
Code (Text):
    commands:
      interact-right:
      - 'player: deluxemenus open navigation4'
Should now look like;
Code (Text):
    interact-right:
    - 'player: deluxemenus open navigation4'

[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Feb 18, 2021

[​IMG]

WARNING: Any existing items.yml AND config.yml files will be automatically backed up and regenerated to the updated version 8, please read the changes below in order to update your old items.yml and config.yml files. Item Commands formatting has changed!

Changelog

Added:
  • Support for Minecraft 1.16.5.
  • Items.yml has been updated to VERSION 8 and will regenerate.
  • Config.yml has been updated to VERSION 8 and will regenerate.
  • RETURN_SWITCH to the Clear Items Options.
    • If you define a set of worlds to clear items from when switching worlds if you have this option enabled and players return to a world where items are not cleared their inventory will be restored.
  • map-id is back.
    • You can now specify a map id for a custom map but leaving this undefined will allow ItemJoin to select a map id to use by itself.
    • Only define this if you know what you are doing or experience conflicts with another plugin.
  • Vanilla Map ID's
    • If you do not define a custom-map-image the map-id defined will now select the defined VANILLA map (or canvas rendered by another plugin).
  • Definable NBT Properties.
    • You can now define properties for each of your custom items.
    • You can define a single property or a list of properties separated by a comma.
    • Format is Identifier:Value and for clarification, these are called NBTTags.
    • Example;
      Code (Text):
      properties: 'TranslatableDisplayName:&aUltra &cItem, Slot:33'
    • This will add TranslatableDisplayName with the String value &aUltra &cItem and add Slot with the Integer value 33.
    • This is mainly useful for implementing features from other plugins.
  • Purge first-commands
    • The purge command now supports the first-commands table.
  • Shulkerbox item nesting.
    • You can now define EXISTING custom items inside a Shulkerbox.
    • Start by creating items as normal to be set as an ItemJoin item, except set the triggers to DISABLED. The only limits for these items are they need to be slots from 0 to 26, any smaller or larger will not work as shulker boxes are smaller than a player inventory. You can also use slot ARBITRARY any other custom slots will not work since there is no crafting inventory or armor slots.
    • These contents are the CONFIG NAME of the ItemJoin item you want to be set. The config names are what define the items, in the example, the shulker box is called shulker-item which is the config name, (not the item name).
    • Example;
Code (Text):
  shulker-item:
    id: BLACK_SHULKER_BOX
    slot: 0
    contents:
    - ultra-item
    - map-item
    - animated-panes
    triggers: join, respawn, world-switch
    enabled-worlds: ALL
  • You can now Mass Save your inventory into ItemJoin using the /itemjoin menu with the exact current slots of the player.
  • Error statements are now sent to admins on login or /reload if ItemJoin has a critical error occurred.
  • first-join trigger to the active commands in the config.yml.
  • Quit for clear-items in the config.yml.
    • Specifying true for all worlds or world names separated by commas will allow the player's inventory to be cleared when disconnecting from the server.
  • Region-Access trigger.
    • Gives the item when entering a specified region and removes it when exiting.
    • Note: Defining Both Region-Enter, Region-Leave will do nothing as you should use this new trigger instead.
  • Region-Egress trigger.
    • Gives the item when leaving a specified region and removes it when entering.
  • REMAIN command sequence for item commands.
    • If this is specified as a command sequence, the item will be required to exist in the player inventory for DELAYED commands to be executed.
    • If the item is removed from the player inventory before the commands finish executing the remaining commands will fail to execute.
  • on-damage item command.
    • When a player has the custom item in their inventory if the player damages an entity or the entity damages the player the command will be executed.
  • on-hit item command.
    • Executed when the player is holding the custom item and hits an entity or another player.
  • commands-sequence to the config.yml for Active Commands.
    • Currently you can specify SEQUENTIAL, or RANDOM_SINGLE, to execute the commands sequentially OR execute a single command line randomly.
  • Permission Blocking of Lang.yml Messages.
    • You can now define itemjoin.lang.LANGMESSAGE and set it to FALSE in your permissions plugin to prevent the lang message from being sent to specific players.
    • You must define both the "general", "category", and the node name of the lang messages.
    • Example; itemjoin.lang.commands.default.unknownCommand and set it to FALSE typically via :false
    • This will block players with this permission from receiving the unknown command message.
    • commands is the general, default is the category, and unknownCommand is the node name of the lang message.
  • Disposable Conditions
    • The item will only be removed from the player if the condition is MET, commands will execute regardless.
    • You can specify a fail message if the condition was not met, this is optional.
    • You can specify a single condition or a list of conditions, however in the list only ONE of the conditions needs to be MET.
    • Current conditional operands are EQUAL, NOTEQUAL, OVER, and UNDER -- Over and Under is specifically INTEGER ONLY conditions.
    • Remember to add the disposable itemflag for this to function.
    • Example;
Code (Text):
disposable-conditions:
- '%mypet_has_pet_treat%:equal:true'
- '%other_placeholder%:notequal:VALUE'
- '%other_placeholder%:over:300'
- '%other_placeholder%:under:700'
disposable-fail-message: '&cYou get to keep your item, lucky!'
  • Command Conditions
    • The item command will only be executed if the condition is MET.
    • You can specify a fail message if the condition was not met, this is optional.
    • You can specify a single condition or a list of conditions, however in the list only ONE of the conditions needs to be MET.
    • Current conditional operands are EQUAL, NOTEQUAL, OVER, and UNDER -- Over and Under is specifically INTEGER ONLY conditions.
    • Command conditions are defined as their action-condition as an example, the action being inventory-left would be inventory-left-condition.
    • Example;
Code (Text):
inventory-left-conditions:
- '%mypet_ishungry%:equal:true'
- '%other_placeholder%:notequal:VALUE'
- '%other_placeholder%:over:600'
- '%other_placeholder%:under:500'
inventory-left-fail-message: '&cYou cannot execute that command until you feed your pet more.'
  • Trigger Conditions
    • The item will only be given to the player upon performing the trigger and the condition is MET.
    • The /itemjoin get command(s) respect this condition and will not be given if they are not met.
    • You can specify a fail message if the condition was not met, this is optional.
    • You can specify a single condition or a list of conditions, however in the list only ONE of the conditions needs to be MET.
    • Current conditional operands are EQUAL, NOTEQUAL, OVER, and UNDER -- Over and Under is specifically INTEGER ONLY conditions.
    • Example;
Code (Text):
trigger-conditions:
- '%mypet_has_pet%:equal:true'
- '%other_placeholder%:notequal:VALUE'
- '%other_placeholder%:over:100'
- '%other_placeholder%:under:200'
trigger-fail-message: '&cYou need to summon your pet.'
  • All config.yml settings have been added to the /itemjoin menu.
  • All items.yml settings have been added to the /itemjoin menu.
  • /ij, get, getAll, and getOnline now have the alias' give, giveAll, and giveOnline.
  • Major errors or warnings that affect the plugin function are now sent to OP (admin) players upon joining the server.
  • Citizens Support.
    • Items are now only given to real players instead of being given to Citizens.
  • ChestSort Support.
    • Items that have the inventory-modify itemflag will now properly maintain their position even when sorted by ChestSort.

Fixed:
  • Major skull item changes, resolved Mojang API Authentication.
  • Bug with legacy skull items.
  • Bug with crafting items incorrectly dropping when death-drops were defined.
  • Major database fixes.
    • MySQL Database connections now use Hikari with Leak prevention.
    • SQLite is now also handled by Hikari to prevent the need to download a separate driver.
  • WorldGuard bug fix.
  • Vault bug fix.
  • Vanilla itemflag bug fix.
    • Itemflag wasn't being enabled despite being defined.
  • Consumable item bugs.
  • Async bug fixes.
  • Bugfix with ItemJoin Commands.
  • Protocol Handlers.
  • Having an outdated AuthMe version no longer breaks ItemJoin.
    • AuthMe will simply be ignored.
  • Placement duplication bug fixes.
  • Count-lock duplication bug fixes.
  • Various swap-item bugs.
  • on-receive bug fix when multiple slots are defined.
    • Will now properly execute the on-receive commands once per item node instead of once per slot set.
  • Major bug fix for Dependencies.
    • If they loaded but were classified as disabled, ItemJoin would break.
  • Potion duration is now correctly set using the /itemjoin menu
  • Duplication bug in creative mode.
  • inventory-modify itemflag now properly blocks Creative mode shift+click to DESTROY items.
  • Crafting items are now loaded properly from the Database
  • Item Commands cooldowns are now properly restored from the Database when reloading the config(s).
  • Limit-modes now properly function.
  • death-drops compatibility with DeathChest plugins.
    • Both the #getInventory and #getDrops instances now have the item removed.
  • Disposable fixes.
  • Overwrite fixes.
  • Dependencies overload when registering the plugin at startup.
  • UUID bug fix for unsupported MC 1.7.
  • Synchronized Item Commands.

Changed:
  • Count-lock now supports Arrows when using a Bow or Crossbow
  • Count-lock now supports consumable items.
  • item-store now supports brewing stands.
  • death-drops itemflag and global prevent will now be disabled if gamerule keepInventory is enabled.
  • Recipes can now have custom items defined in them by specifying the item node instead of a material name.
  • /ij permissions pages are now dynamically generated to have a max of 15 permission nodes per-page.
  • Major database changes.
    • Database is now handled using DataObjects.
    • Tables have been refactored to remove the Player_Name category.
  • slot now supports Placeholders.
  • table is now redefined as database in the config.yml.
  • /itemjoin autoupgrade is now defined as /itemjoin upgrade
  • Item Commands no longer use the commands identifier to be defined.
    • If your item has the commands identifier it will need to be removed for items to function again.
    • Do make sure you implement proper YAML formatting as when you remove the commands node there are two spaces in front of the interact-right node you need to remove.
    • So commands which resembled;
Code (Text):
    commands:
      interact-right:
      - 'player: deluxemenus open navigation4'
Should now look like;
Code (Text):
    interact-right:
    - 'player: deluxemenus open navigation4'

[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Feb 16, 2021

ItemJoin v5.1.0-RELEASE

WARNING: If Upgrading: Please read the changes below for v5.0.7 as it contains major changes that affect this version.

Changelog

Added:
  • Water/Lava/Bukkit Support for the count-lock itemflag.
Fixed:
  • Conflicts with other plugins using BungeeCord.
  • Bug with cooldown message trying to send a null message if left blank.
  • Bug with Chances "Probability Items".
  • Menu bug if an item was defined as material AIR.
  • Crafting items result slot fix.
  • Bug with the Database/MySQL.
  • Bug with [close] argument on an item command dropping any crafting items.
  • Bug with /itemjoin get and /itemjoin remove commands not locating players that are specifically named numerical numbers.
  • Bug with CheckforUpdates not refreshing the cache.
  • Bug with duplicating crafting items.

---------------------------------------------------------------------------------------------------------------------------------------------------------------

[​IMG]
WARNING: If Upgrading: Your items.yml and Lang.yml will regenerate as new versions have been released, please see the major changes below.

Changelog

Added:

  • Updated to Minecraft 1.16 for the Nether Update!
  • New Russian Localization.
    • Simply change the Language in your config.yml to Russian and the ru-lang.yml file will be generated.
  • New French Localization.
    • Simply change the Language in your config.yml to French and the fr-lang.yml file will be generated.
  • Hex Color support for Strings.
    • This can be done using &# followed by the hex color numerical values.
    • Example;
      Code (Text):
      name: '&#184d47I am a hex color!'
  • New Lang.yml version 8.
    • NOTE: Your lang.yml will regenerate when installing this version of ItemJoin, the old lang.yml will be saved.
    • Major changes including the addition of redefining certain placeholders.
  • New items.yml version 7.
    • NOTE: Your items.yml will regenerate when installing this version of ItemJoin, the old items.yml will be saved.
    • Major changes were made to item configurations including item commands. Please see the changes below.
  • Triggers for the HeldItem-Slot in the config.yml.
    • Simply define the trigger(s) separated by a comma, these are the trigger names used for items such as JOIN, RESPAWN, WORLD-SWITCH
    • You will need to add this to the config.yml to properly use the triggers, by default it will be automatically set to ALL triggers enabled if undefined.
Code (Text):
Settings:
  HeldItem-Slot: DISABLED
  HeldItem-Triggers: JOIN
  DataTags: true
  • Blacklist feature to the clear items in the config.yml.
    • How it works; {TYPE:VALUE}
    • There are three types; id, slot, and name.
    • The value is the corresponding value for the types. Do not put any color codes for the value input for the name type, color codes are stripped and are not needed.
    • The Blacklist identifier requires an apostrophe at the beginning and end of the list of blacklisted items as shown in the example below. This is a limitation of the YML file, forgetting to do so will result in error codes.
    • In the example below BEDROCK items will not be removed, any item in slot zero will not be removed, and any item containing the name Blazefury will not be removed.
    • Example of Blacklisting;
Code (Text):
Clear-Items:
  Type: ALL
  Delay-Tick: 2
  Join: true
  World-Switch: true
  Region-Enter: DISABLED
  Options: PROTECT
  Blacklist: '{id:BEDROCK}, {slot:0}, {name:Blazefury}'

    • Mobs Drop
      • You can now specify a list of mobs and their probability of dropping the custom item.
      • A probability of 1.0 is the max probability and is considered to be 100%.
      • Formatting is
        Code (Text):
        ENTITY:PROBABILITY
      • The Entity expects an entity type input, obviously all entities will not work such as an ender pearl. The entity input should be a physical mob. List of entities here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html
      • Recommendations (not required): Set triggers to DISABLED to prevent players from getting the items on join. Set the slot of ARBITRARY--there is no real reason for this but it can help with compatibility in the future.
Code (Text):
  mobs-item:
    id: IRON_SWORD
    slot: ARBITRARY
    name: '&cStolen Sword'
    lore:
    - '&7Pulled from the ashes of chaos.'
    mobs-drop:
    - 'ZOMBIE:0.001'
    - 'PIG:0.3'
    triggers: DISABLED
    enabled-worlds: world, world_the_end

    • Blocks Drop
      • You can now specify a list of mobs and their probability of dropping the custom item.
      • A probability of 1.0 is the max probability and is considered to be 100%.
      • Formatting is
        Code (Text):
        MATERIAL:PROBABILITY
      • The Material expects a block type input, obviously, all materials will not work such as a COOKED_STEAK. The block input should be a physical block. List of materials here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
      • Recommendations (not required): Set triggers to DISABLED to prevent players from getting the items on join. Set the slot of ARBITRARY--there is no real reason for this but it can help with compatibility in the future.
Code (Text):
  blocks-item:
    id: DIAMOND_BLOCK
    slot: ARBITRARY
    name: '&aSurprise!'
    mobs-drop:
    - 'ZOMBIE:0.001'
    - 'PIG:0.3'
    triggers: DISABLED
    enabled-worlds: All

    • Custom Recipe.
      • You can now specify a recipe for a custom item.
      • To define a recipe, you must specify the shape with the ingredient characters, as well as the ingredients with their characters. The ingredients expect a single character followed by the material input. See the example item below.
      • Recipe shapes are quite diverse and can be defined in unique shapes as shown.
      • X Stands for Air, do NOT include X in the 'ingredients' below.
      • Examples of Recipe usages:
Code (Text):
    recipe:
    - 'XGX'
    - 'IDI'
    - 'XGX'
    recipe:
    - 'XG'
    - 'XD'
    recipe:
    - 'XGX'
    - 'IDI'
    recipe:
    - 'G'
    - 'D'
    - 'G'
Code (Text):
  recipe-item:
    id: BEDROCK
    slot: ARBITRARY
    name: '&6Essence'
    lore:
    - '&7Shhhh don''t tell anyone...'
    recipe:
    # X Stands for Air, do NOT include X in the 'ingredients' below.
    - 'XGX' # First row in the crafting table
    - 'IDI' # Second row in the crafting table
    - 'XGX' # Third row in the crafting table
    ingredients:
    # Format: LETTER:ITEMID
    - 'G:GOLD_INGOT' # G Stands for Gold Ingot.
    - 'I:IRON_INGOT' # I Stands for Iron Ingot.
    - 'D:DIAMOND' # D Stands for Diamond, you can use any letter here and the ITEMID can be numerical.
    triggers: DISABLED

    • ClickEvent change_page for JSON Books.
      • Example; <change_page:2>
    • First-Life trigger.
      • Gives the player the item ONLY ONCE upon joining the server, however upon respawning the item will always be given.
    • Glowing itemflag.
      • Gives the item the "enchanted" glowing effect.
    • Stackable itemflag.
      • Allows items that are not stackable to be stacked up to x64.
      • This is done automatically on pickup, click-drag, and shift+click.
    • Selectable itemflag.
      • Any item with this itemflag will not be allowed to be selected.
      • If the item is selected the player has about a half-second to move past the item or it will automatically jump to the next available item in the direction the player was originally scrolling.
    • ItemCommand on-death.
      • This will allow any item with on-death commands defined found in the player's inventory to execute a set of commands.
      • Example;
Code (Text):
  example-item:
    id: DIAMOND
    slot: 0
    commands:
      on-death:
      - 'message: &eYou have died!'
      - 'console: say %player% has met their fate'

    • Item Attributes.
      • You can now define any available attributes on an item that accepts attributes such as a Diamond Sword.
      • This is set up by defining attributes followed by {ATTRIBUTE:VALUE}, you can define multiple attributes separated by a comma.
      • Example usage;
        Code (Text):
        attributes: '{GENERIC_ATTACK_DAMAGE:15.2}, {GENERIC_ATTACK_SPEED:19.0}'
      • These attributes work on Minecraft versions as early as 1.8 to the latest 1.16.2. They do change names so its best to use the /itemjoin menu for this.
      • For current 1.16.2 attributes see; Spigot Link.
      • Legacy JavaDocs can be found here; CG Link.
    • Command to purge map-ids for images.
      • /itemjoin purge map-ids <image>
      • <image> is the exact name of the image to purge including the extension such as image0.gif
      • This is useful for resetting custom map items in the event they stop properly rendering due to another plugin.
    • Hyperverse Support.
      • Automagically enabled if Hyperverse is found on the server
    • SkinsRestorer Support.
      • Automagically enabled if SkinsRestorer is found on the server.
    • Maven/Gradle Repository - For Developers.
      • Add this to your pom.xml if you are compiling with Maven.
Code (Text):
    <!--CraftationGaming Repository-->
        <repository>
            <id>CraftationGaming</id>
            <url>https://raw.githubusercontent.com/RockinChaos/repository/maven-public/</url>
        </repository>

    <!--ItemJoin API-->
        <dependency>
            <groupId>me.RockinChaos.itemjoin</groupId>
            <artifactId>ItemJoin</artifactId>
            <version>5.0.7-RELEASE</version>
            <scope>provided</scope>
        </dependency>
Fixed:

  • Bug with dynamic book items breaking.
  • Bug with JSON book items breaking if no pages were defined.
  • Bug with crafting items clearing chests when stopping the server.
    • Occurred when players had a chest open at the time of server stop.
  • Bug with crafting items being put into chests if opened quickly enough.
  • Bug with MySQL not supporting UTF-8 symbols.
  • Bug with the protocol manager.
  • Bug with hex colors being reversed when defined for leather armor.
  • Bug with inventory-modify itemflag not blocking the pick-block action in survival/creative.
  • Bug with self-drops itemflag.
  • Bug with the self-drops itemflag when crafting items existed.
  • Bug with regions, items not being given and removed properly.
  • Bug with limit-modes, items not being given and removed properly.
  • Bug with switching worlds duplicating crafting items.
  • Bug with closing inventory with a prepared crafting item duplicating/
  • Bug with Obtain-Items-OP permissions.
  • Bug with item-store itemflag allowing placement into grindstones.
  • Bug with not being able to save items into the /ij menu if they were not in the Hotbar slot.
  • Bug with Chat Plugins putting color codes in front of text caught by the /itemjoin menu.
  • Bug with other players being able to chat for text input in the /itemjoin menu.
    • This would cause their input to save and the menu to appear on their screen instead of the original executing player.
  • Bug with Language Prefix.
    • If the prefix was removed, space would still remain in front of the message text.
  • Bug with commands-cost.
    • The item would fail to execute claiming lack of funds despite the player having enough money.
    • Issue occurred because Vault wasn't being properly initialized.
  • Bug with items-Spamming not properly functioning if no commands cooldown was defined.
    • The item-store itemflag now properly functions with barrels and foxes.
  • Issues with Map Items.
  • Other random bugs.
Changed:

  • ItemCommands (Command Actions) has been rewritten.
    • This means any prior command actions such as multi-click will no longer function.
    • Please see the list below for proper command actions;
    • Interact - Actions performed with the player's inventory closed, usually with the item in their hand.
    • Inventory - Actions performed with the player's inventory open, usually clicking the item with their cursor.
    • The Commands:
    • interact - Executes the commands when the player is left or right-clicking a block or the air with the item in their hand.
    • interact-air - Executes the commands when the player is left or right-clicking the air with the item in their hand.
    • interact-block - Executes the commands when the player is left or right-clicking a block with the item in their hand.
    • interact-left - Executes the commands when the player is left-clicking a block or the air with the item in their hand.
    • interact-air-left - Executes the commands when the player is left-clicking the air with the item in their hand.
    • interact-block-left - Executes the commands when the player is left-clicking a block with the item in their hand.
    • interact-right - Executes the commands when the player is right-clicking a block or the air with the item in their hand.
    • interact-air-right - Executes the commands when the player is right-clicking the air with the item in their hand.
    • interact-block-right - Executes the commands when the player is right-clicking a block with the item in their hand.
    • inventory - Executes the command when the player is middle-mouse, left, right, shift-left, shift-right clicking the item in their inventory.
    • inventory-middle - Executes the command when the player is middle-mouse clicking the item in their inventory.
    • inventory-creative - Executes the command when the player is in creative mode and clicks the item in their inventory, any click action will trigger this event.
    • inventory-left - Executes the command when the player is left-clicking the item in their inventory.
    • inventory-right - Executes the command when the player is right-clicking the item in their inventory.
    • inventory-shift-left - Executes the command when the player is shift-left clicking the item in their inventory.
    • inventory-shift-right - Executes the command when the player is shift-right clicking the item in their inventory.
    • inventory-swap-cursor - Executes the command when the player is swapping the item on their cursor with the item in their inventory.
    • on-receive - Executes the commands when the player receives the item for every x second(s) for every x number of times.
      • Every x second(s) is defined by setting the wait value as the commands-cooldown.
      • The every x number of times is defined by adding commands-receive to the item and setting a numerical value.
    • on-hold - Executes the commands every x second(s) while the player is holding the item.
      • Every x second(s) is defined by setting the wait value as the commands-cooldown.
    • on-equip - Executes the commands when equipping the item into an armor slot.
    • un-equip - Executes the commands when unequipping the item from an armor slot.
    • on-death - Executes the command when the player holding the item in their inventory dies.
    • physical - Executes the command if a player steps on a pressure plate, hits a mob, opens a chest, or any other physical actions with that item in the player's hand.
  • Commands-Cooldown is now stored in the database.db.
    • If players exit the server or the server restarts the cooldown duration will still remain the same.
  • The Options for clear items now support PROTECT_OP and PROTECT_CREATIVE.
    • This prevents op and/or creative mode players from having their items cleared.
  • Removed the Bypass section for clear-items, this is no longer needed.
  • Removed Log-Coloration from the config.yml.
    • This is no longer needed as ItemJoin now uses the server logger to send messages which are no longer sent with color codes.
  • Defining an item with 100 percent probability now sends a console error.
  • Book and Quill will now be auto-closed if it has the cancel-events itemflag defined.
  • Completely rewrote the class which handles GIF images on map items, they now properly render with the correct speed/delay.
  • Rewrote a lot of core code.
    • Massive optimizations, performance increase.
    • Added commenting to every single plugin method.
    • Added commenting to every class file with the new license format.
  • Database tables now start with the prefix ij_.
    • Helps make them unique and easy to identify.
  • The Licensing is now properly being attached to the jar file and now has a new license [GNU Lesser General Public License v3.0] instead of the previous restrictive custom license.
  • Updated TokenEnchant dependency to support the latest version.
  • Updated BetterNick dependency to support both old and new API revisions.
  • Updated WorldGuard and WorldEdit dependency to support Legacy and Current API revisions.
  • Updated issues templates, readme, and other git files.
Removed:

    • Commands-Type as it is no longer needed.
      • Please see the Changes section.
[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Sep 9, 2020

[​IMG]
WARNING: If Upgrading: Your items.yml and Lang.yml will regenerate as new versions have been released, please see the major changes below.

Changelog

Added:



    • Updated to Minecraft 1.16 for the Nether Update!
    • New Russian Localization.
      • Simply change the Language in your config.yml to Russian and the ru-lang.yml file will be generated.
    • New French Localization.
      • Simply change the Language in your config.yml to French and the fr-lang.yml file will be generated.
    • Hex Color support for Strings.
      • This can be done using &# followed by the hex color numerical values.
      • Example;
        Code (Text):
        name: '&#184d47I am a hex color!'
    • New Lang.yml version 8.
      • NOTE: Your lang.yml will regenerate when installing this version of ItemJoin, the old lang.yml will be saved.
      • Major changes including the addition of redefining certain placeholders.
    • New items.yml version 7.
      • NOTE: Your items.yml will regenerate when installing this version of ItemJoin, the old items.yml will be saved.
      • Major changes were made to item configurations including item commands. Please see the changes below.
    • Triggers for the HeldItem-Slot in the config.yml.
      • Simply define the trigger(s) separated by a comma, these are the trigger names used for items such as JOIN, RESPAWN, WORLD-SWITCH
      • You will need to add this to the config.yml to properly use the triggers, by default it will be automatically set to ALL triggers enabled if undefined.
Code (Text):
Settings:
  HeldItem-Slot: DISABLED
  HeldItem-Triggers: JOIN
  DataTags: true



    • Blacklist feature to the clear items in the config.yml.
      • How it works; {TYPE:VALUE}
      • There are three types; id, slot, and name.
      • The value is the corresponding value for the types. Do not put any color codes for the value input for the name type, color codes are stripped and are not needed.
      • The Blacklist identifier requires an apostrophe at the beginning and end of the list of blacklisted items as shown in the example below. This is a limitation of the YML file, forgetting to do so will result in error codes.
      • In the example below BEDROCK items will not be removed, any item in slot zero will not be removed, and any item containing the name Blazefury will not be removed.
      • Example of Blacklisting;
Code (Text):
Clear-Items:
  Type: ALL
  Delay-Tick: 2
  Join: true
  World-Switch: true
  Region-Enter: DISABLED
  Options: PROTECT
  Blacklist: '{id:BEDROCK}, {slot:0}, {name:Blazefury}'



    • Mobs Drop
      • You can now specify a list of mobs and their probability of dropping the custom item.
      • A probability of 1.0 is the max probability and is considered to be 100%.
      • Formatting is
        Code (Text):
        ENTITY:PROBABILITY
      • The Entity expects an entity type input, obviously all entities will not work such as an ender pearl. The entity input should be a physical mob. List of entities here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html
      • Recommendations (not required): Set triggers to DISABLED to prevent players from getting the items on join. Set the slot of ARBITRARY--there is no real reason for this but it can help with compatibility in the future.
Code (Text):
  mobs-item:
    id: IRON_SWORD
    slot: ARBITRARY
    name: '&cStolen Sword'
    lore:
    - '&7Pulled from the ashes of chaos.'
    mobs-drop:
    - 'ZOMBIE:0.001'
    - 'PIG:0.3'
    triggers: DISABLED
    enabled-worlds: world, world_the_end



    • Blocks Drop
      • You can now specify a list of mobs and their probability of dropping the custom item.
      • A probability of 1.0 is the max probability and is considered to be 100%.
      • Formatting is
        Code (Text):
        MATERIAL:PROBABILITY
      • The Material expects a block type input, obviously, all materials will not work such as a COOKED_STEAK. The block input should be a physical block. List of materials here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
      • Recommendations (not required): Set triggers to DISABLED to prevent players from getting the items on join. Set the slot of ARBITRARY--there is no real reason for this but it can help with compatibility in the future.
Code (Text):
  blocks-item:
    id: DIAMOND_BLOCK
    slot: ARBITRARY
    name: '&aSurprise!'
    mobs-drop:
    - 'ZOMBIE:0.001'
    - 'PIG:0.3'
    triggers: DISABLED
    enabled-worlds: All



    • Custom Recipe.
      • You can now specify a recipe for a custom item.
      • To define a recipe, you must specify the shape with the ingredient characters, as well as the ingredients with their characters. The ingredients expect a single character followed by the material input. See the example item below.
      • Recipe shapes are quite diverse and can be defined in unique shapes as shown.
      • X Stands for Air, do NOT include X in the 'ingredients' below.
      • Examples of Recipe usages:
Code (Text):
    recipe:
    - 'XGX'
    - 'IDI'
    - 'XGX'
    recipe:
    - 'XG'
    - 'XD'
    recipe:
    - 'XGX'
    - 'IDI'
    recipe:
    - 'G'
    - 'D'
    - 'G'
Code (Text):
  recipe-item:
    id: BEDROCK
    slot: ARBITRARY
    name: '&6Essence'
    lore:
    - '&7Shhhh don''t tell anyone...'
    recipe:
    # X Stands for Air, do NOT include X in the 'ingredients' below.
    - 'XGX' # First row in the crafting table
    - 'IDI' # Second row in the crafting table
    - 'XGX' # Third row in the crafting table
    ingredients:
    # Format: LETTER:ITEMID
    - 'G:GOLD_INGOT' # G Stands for Gold Ingot.
    - 'I:IRON_INGOT' # I Stands for Iron Ingot.
    - 'D:DIAMOND' # D Stands for Diamond, you can use any letter here and the ITEMID can be numerical.
    triggers: DISABLED



    • ClickEvent change_page for JSON Books.
      • Example; <change_page:2>
    • First-Life trigger.
      • Gives the player the item ONLY ONCE upon joining the server, however upon respawning the item will always be given.
    • Glowing itemflag.
      • Gives the item the "enchanted" glowing effect.
    • Stackable itemflag.
      • Allows items that are not stackable to be stacked up to x64.
      • This is done automatically on pickup, click-drag, and shift+click.
    • Selectable itemflag.
      • Any item with this itemflag will not be allowed to be selected.
      • If the item is selected the player has about a half-second to move past the item or it will automatically jump to the next available item in the direction the player was originally scrolling.
    • ItemCommand on-death.
      • This will allow any item with on-death commands defined found in the player's inventory to execute a set of commands.
      • Example;
Code (Text):
  example-item:
    id: DIAMOND
    slot: 0
    commands:
      on-death:
      - 'message: &eYou have died!'
      - 'console: say %player% has met their fate'



    • Item Attributes.
      • You can now define any available attributes on an item that accepts attributes such as a Diamond Sword.
      • This is set up by defining attributes followed by {ATTRIBUTE:VALUE}, you can define multiple attributes separated by a comma.
      • Example usage;
        Code (Text):
        attributes: '{GENERIC_ATTACK_DAMAGE:15.2}, {GENERIC_ATTACK_SPEED:19.0}'
      • These attributes work on Minecraft versions as early as 1.8 to the latest 1.16.2. They do change names so its best to use the /itemjoin menu for this.
      • For current 1.16.2 attributes see; Spigot Link.
      • Legacy JavaDocs can be found here; CG Link.
    • Command to purge map-ids for images.
      • /itemjoin purge map-ids <image>
      • <image> is the exact name of the image to purge including the extension such as image0.gif
      • This is useful for resetting custom map items in the event they stop properly rendering due to another plugin.
    • Hyperverse Support.
      • Automagically enabled if Hyperverse is found on the server
    • SkinsRestorer Support.
      • Automagically enabled if SkinsRestorer is found on the server.
    • Maven/Gradle Repository - For Developers.
      • Add this to your pom.xml if you are compiling with Maven.
Code (Text):
    <!--CraftationGaming Repository-->
        <repository>
            <id>CraftationGaming</id>
            <url>https://raw.githubusercontent.com/RockinChaos/repository/maven-public/</url>
        </repository>

    <!--ItemJoin API-->
        <dependency>
            <groupId>me.RockinChaos.itemjoin</groupId>
            <artifactId>ItemJoin</artifactId>
            <version>5.0.7-RELEASE</version>
            <scope>provided</scope>
        </dependency>
Fixed:



    • Bug with dynamic book items breaking.
    • Bug with JSON book items breaking if no pages were defined.
    • Bug with crafting items clearing chests when stopping the server.
      • Occurred when players had a chest open at the time of server stop.
    • Bug with crafting items being put into chests if opened quickly enough.
    • Bug with MySQL not supporting UTF-8 symbols.
    • Bug with the protocol manager.
    • Bug with hex colors being reversed when defined for leather armor.
    • Bug with inventory-modify itemflag not blocking the pick-block action in survival/creative.
    • Bug with self-drops itemflag.
    • Bug with the self-drops itemflag when crafting items existed.
    • Bug with regions, items not being given and removed properly.
    • Bug with limit-modes, items not being given and removed properly.
    • Bug with switching worlds duplicating crafting items.
    • Bug with closing inventory with a prepared crafting item duplicating/
    • Bug with Obtain-Items-OP permissions.
    • Bug with item-store itemflag allowing placement into grindstones.
    • Bug with not being able to save items into the /ij menu if they were not in the Hotbar slot.
    • Bug with Chat Plugins putting color codes in front of text caught by the /itemjoin menu.
    • Bug with other players being able to chat for text input in the /itemjoin menu.
      • This would cause their input to save and the menu to appear on their screen instead of the original executing player.
    • Bug with Language Prefix.
      • If the prefix was removed, space would still remain in front of the message text.
    • Bug with commands-cost.
      • The item would fail to execute claiming lack of funds despite the player having enough money.
      • Issue occurred because Vault wasn't being properly initialized.
    • Bug with items-Spamming not properly functioning if no commands cooldown was defined.
      • The item-store itemflag now properly functions with barrels and foxes.
    • Issues with Map Items.
    • Other random bugs.
Changed:



    • ItemCommands (Command Actions) has been rewritten.
      • This means any prior command actions such as multi-click will no longer function.
      • Please see the list below for proper command actions;
      • Interact - Actions performed with the player's inventory closed, usually with the item in their hand.
      • Inventory - Actions performed with the player's inventory open, usually clicking the item with their cursor.
      • The Commands:
      • interact - Executes the commands when the player is left or right-clicking a block or the air with the item in their hand.
      • interact-air - Executes the commands when the player is left or right-clicking the air with the item in their hand.
      • interact-block - Executes the commands when the player is left or right-clicking a block with the item in their hand.
      • interact-left - Executes the commands when the player is left-clicking a block or the air with the item in their hand.
      • interact-air-left - Executes the commands when the player is left-clicking the air with the item in their hand.
      • interact-block-left - Executes the commands when the player is left-clicking a block with the item in their hand.
      • interact-right - Executes the commands when the player is right-clicking a block or the air with the item in their hand.
      • interact-air-right - Executes the commands when the player is right-clicking the air with the item in their hand.
      • interact-block-right - Executes the commands when the player is right-clicking a block with the item in their hand.
      • inventory - Executes the command when the player is middle-mouse, left, right, shift-left, shift-right clicking the item in their inventory.
      • inventory-middle - Executes the command when the player is middle-mouse clicking the item in their inventory.
      • inventory-creative - Executes the command when the player is in creative mode and clicks the item in their inventory, any click action will trigger this event.
      • inventory-left - Executes the command when the player is left-clicking the item in their inventory.
      • inventory-right - Executes the command when the player is right-clicking the item in their inventory.
      • inventory-shift-left - Executes the command when the player is shift-left clicking the item in their inventory.
      • inventory-shift-right - Executes the command when the player is shift-right clicking the item in their inventory.
      • inventory-swap-cursor - Executes the command when the player is swapping the item on their cursor with the item in their inventory.
      • on-receive - Executes the commands when the player receives the item for every x second(s) for every x number of times.
        • Every x second(s) is defined by setting the wait value as the commands-cooldown.
        • The every x number of times is defined by adding commands-receive to the item and setting a numerical value.
      • on-hold - Executes the commands every x second(s) while the player is holding the item.
        • Every x second(s) is defined by setting the wait value as the commands-cooldown.
      • on-equip - Executes the commands when equipping the item into an armor slot.
      • un-equip - Executes the commands when unequipping the item from an armor slot.
      • on-death - Executes the command when the player holding the item in their inventory dies.
      • physical - Executes the command if a player steps on a pressure plate, hits a mob, opens a chest, or any other physical actions with that item in the player's hand.
    • Commands-Cooldown is now stored in the database.db.
      • If players exit the server or the server restarts the cooldown duration will still remain the same.
    • The Options for clear items now support PROTECT_OP and PROTECT_CREATIVE.
      • This prevents op and/or creative mode players from having their items cleared.
    • Removed the Bypass section for clear-items, this is no longer needed.
    • Removed Log-Coloration from the config.yml.
      • This is no longer needed as ItemJoin now uses the server logger to send messages which are no longer sent with color codes.
    • Defining an item with 100 percent probability now sends a console error.
    • Book and Quill will now be auto-closed if it has the cancel-events itemflag defined.
    • Completely rewrote the class which handles GIF images on map items, they now properly render with the correct speed/delay.
    • Rewrote a lot of core code.
      • Massive optimizations, performance increase.
      • Added commenting to every single plugin method.
      • Added commenting to every class file with the new license format.
    • Database tables now start with the prefix ij_.
      • Helps make them unique and easy to identify.
    • The Licensing is now properly being attached to the jar file and now has a new license [GNU Lesser General Public License v3.0] instead of the previous restrictive custom license.
    • Updated TokenEnchant dependency to support the latest version.
    • Updated BetterNick dependency to support both old and new API revisions.
    • Updated WorldGuard and WorldEdit dependency to support Legacy and Current API revisions.
    • Updated issues templates, readme, and other git files.
Removed:



    • Commands-Type as it is no longer needed.
      • Please see the Changes section.
[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Aug 31, 2020

[​IMG]
Notice: All previously given JSON Books will BREAK when updating. To resolve this add the dynamic itemflag to the book item. If you do not use JSON Books or you are continuously giving players new JSON Books or you are just now creating a new JSON Book do not worry about these changes. See the changes section below for the new proper JSON formatting.

Changelog

Added:
  • Officially updated to Minecraft 1.15.
    • Nothing notable has changed, everything functions as intended when updating.
    • Exception: Book pages API has been changed.
  • commands-sequence: RANDOM_SINGLE
    • This will execute ONE of the commands that have been listed for the item, randomly with all lines having equal values.
  • Custom durability data support.
    • Simply define data: 12 for your item and replace 12 with the damage value you wish for the item to take. If the items max damage value is 150 and you set the custom texture to be applied for the damage value 140 you would put 10 as your data on the item.
    • Automagically makes the item unbreakable and hides the unbreakable text once the texture is applied.
  • Custom Model Data support (1.14+)
    • You can add the model data so each item has its own individual texture through the /itemjoin menu under the data section or by adding model-data: 10001 to your item for example.
    • Note: This is the numerical value you assigned in the .json file.
  • Massive additions to the API.
  • Delete option to the ItemJoin Menu.
  • New itemflag move-next
    • Adding this to an item will tell it to move any item that it finds in its dedicated slot to the next available slot. Essentially making it so you can move an existing item out of the way so the custom item can be put in its slot.
  • Support for the count-lock itemflag on the TOTEM_OF_UNDYING item.
  • Support for MySQL (External Database) connections.
    • You will need to add the following to your config.yml or generate a new config.yml to setup MySQL connections.
Code (Text):
Database:
  MySQL: false
  host: 'localhost'
  port: 3306
  table: 'database_name'
  user: 'root'
  pass: 'password'
  • New commands-item cost to custom items.
    • Setting commands-item to an item will try to remove the defined Material from the player before running the command.
    • To set the amount of item cost to be charged add the commands-cost integer to the item, this is now a dual purpose identifier.
    • Example;
      Code (Text):
      commands-item: EMERALD
      commands-cost: 3
    • This will remove three emeralds from the player's inventory before running the command. If you do not define the commands-cost it will remove one emerald by default.
  • New Global Death-Drops and Self-Drops prevention settings.
    • Self-Drops: Prevents the dropping of ALL items globally when a player tries to drop it.
    • Death-Drops: Prevents the dropping of ALL items globally when a player dies.
    • Since the config.yml will not be regenerated, to use this you will need to add the Self-Drops and Death-Drops sections to your Prevent section.
Code (Text):
Prevent:
  Pickups: DISABLED
  itemMovement: DISABLED
  Self-Drops: DISABLED
  Death-Drops: DISABLED
  Bypass: CREATIVE, OP
  • On-Equip and Un-Equip command types.
    • This only works for items that can be placed into armor slots and run the commands per on-equip and un-equip action.
Code (Text):
   commands:
     on-equip:
     - 'message: &aYou have equipped this item!'
     un-equip:
     - 'message: &cYou have unequipped this item!'
  • On-Hold command type.
    • This functions by executing the command when holding the item in your main or offhand every x seconds until the item is no longer being held.
    • The every x seconds is defined via the items commands-cooldown, if no cooldown is defined it will default to every 1 second(s) to prevent server crashes.
Code (Text):
   commands:
     on-hold:
     - 'message: &aYou are holding an item..'
  • On-Receive command type.
    • This functions by executing the command when the player receives the item. This allows you to execute a command every x seconds for every x number of times.
    • The every x number of times is defined via the new commands-receive, if no receive count is defined it will default to only 1 execution cycle.
    • The every x seconds is defined via the items commands-cooldown, if no cooldown is defined it will default to every 1 second(s) to prevent server crashes.
    • In the example below, the command will be executed 3 times with a 2-second cooldown or (delay) in-between each command execution.
Code (Text):
   commands:
     on-receive:
     - 'message: &aYou have been given an item.'
   commands-receive: 3
   commands-cooldown 2
  • RANDOM_LIST commands-sequence.
    • You can now define commands lists to be randomly selected from when performing the specified action. The listed commands will only execute if you specify commands-sequence: RANDOM_LIST as this will randomly select a list of commands to execute with equal values.
    • In the example below, there are two commands lists defined for the right-click action. Since there are only two lists it has a 50% chance to be a winner or 50% chance to be a loser.
Code (Text):

   commands:
     right-click:
         winner:
         - 'message: &aYou have won the dice role!'
         - 'console: give %player% diamond 64'
         loser:
         - 'message: &cYou have lost the dice role..'
         - 'console: kill %player%'

Fixed:
  • Bug with skull-textures in animations/dynamic updating.
  • Trimmed skull-textures to fit the bounds of the item lore for the /itemjoin menu.
  • Bug with the item's lore for animated items saving any modified lore that was not saved in the /itemjoin menu.
  • Bug with the item's lore for animated items saving the custom lore from the modify menu displaying helpful information.
  • Bug with global commands.
  • Bug with WorldGuard being enabled randomly even though it wasn't being utilized.
  • Bug with WorldGuard not being enabled when using the Region-Enter clearing option.
  • Bug with drop-full itemflag not functioning properly.
  • Bug with give-next itemflag not functioning properly.
  • Bug with skulls not having the skull-owner skins properly drawn.
  • Bug with hex colors on leather armor.
  • Bug with cancel-events itemflag not always working properly.
  • Bug with item-craftable itemflag.
  • Bug with count-lock itemflag.
  • Bugs with crafting items.
  • Bug with items-Overwrite boolean and Overwrite itemflag not functioning.
  • Bugs with fireworks not working properly when missing certain options.
  • Bug with skull-textures not saving when adding/modifying them in the GUI menu.
  • Bug with crafting items being given back on death.
  • Bug with active commands throwing error codes when missing certain options.
  • Bug with checking for updates due to the website API being changed.
  • Updated optional dependencies.

Changed:
  • commands-sequence: RANDOM
    • This no longer has the functionality of executing a single command line randomly, this now executes ALL command lines in a random order, with all lines having equal values.
  • JSON Books have been re-coded and reformatted.
    • Old JSON Books prior to this update will BREAK unless you add the dynamic itemflag to the item.
    • New JSON formatting is <TYPE:VALUE>
    • Current types are open_url, run_command, show_text, and text.
    • Replace value with the value of your intention such as a text to be shown or a command to be executed.
    • Example;
      Code (Text):
      <text:I am a clickable hover text component><show_text:Visit the website! \nAnyone is welcome.><open_url:https://www.craftationgaming.com>
  • Massive optimizations to existing code...
  • Clear-items delay is now properly set to ticks instead of seconds.

[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Mar 26, 2020

ItemJoin-v5.0.5-RELEASE

Notice: Please see the previous changes from v5.0.4 as these are massive changes that are worth quickly reading: https://github.com/RockinChaos/ItemJoin/wiki/Recent-Changes

Changelog
Fixed:
  • Resolved a bug with the PlayerInteractEvent when performing a physical action such as stepping on a pressure plate.
  • An issue with a couple of lines being untranslated in the Chinese lang.
  • Bug with items not being saved properly when creating/saving in-game items, modifying worked as intended.
  • Legacy issues with items that have data values in the menu's material selection.
  • Incorrect translations in the Chinese / Spanish lang.yml's.
  • Other random bugs with the menu command mainly with legacy versions.

[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Sep 26, 2019

[​IMG]
I would like to apologize for this update taking so long. The snapshot branch has been getting some-what frequent updates but I wanted to make sure that everything was as fleshed out as possible and bug-free before I pushed out such a massive update. Hopefully, the introduction of the new GUI Menu will make up for the delay!

Changelog

Added:
  • Officially updated to Minecraft 1.14.
    • No notable changes, everything functioned as intended when compiled on 1.13 and ran on 1.14.
    • Excluding the book pages issue which has been fixed.
  • New command /itemjoin menu
    • The alternative command is /itemjoin creator
    • Allows the modification of existing items, creation of new items, and saving of existing items in your inventory, all through an in-game GUI Menu.
    • You now save existing items by dragging and dropping them into the GUI Menu's friendly little hopper.
    • Saving items now correctly saves; book pages, author, title, generation, skull-owners, skull-textures, banner patterns, charge colors, firework meta, leather meta, name, lore, count, durability, and more!
    • There has also been a new section added to the lang.yml which will need to have these messages added for this command to function properly, please copy and paste the information below OR copy and regenerate your lang.yml;
    • Code (Text):
        UI:
          creatorLaunched: '&aItem creator has been opened.'
          itemSaved: '&e%item% &ahas been successfully saved.'
          notInteger: '&c&l&nERROR:&c The input value &4%input% &cis not an integer value!'
          noMatch: '&c&l&nERROR:&c The input value &4%input% &cis not an proper material!'
          inputType: '&aType the &e%type% &athat you want to have on your item.'
          inputSet: '&aThe items &e%type% &ahas been successfully set!'
          normalExample: '&aExample: %example%'

  • An amount specified that can be removed from a player inventory for all remove commands.
    • /itemjoin removeOnline <item> <qty>
    • /itemjoin remove <item> <qty>
    • /itemjoin remove <item> <player> <qty>
  • Item WarmUp delay before command execution #210.
    • You can specify the warmup delay per item in seconds, leaving it undefined will result in no warmup delay.
    • Usage (five-second delay);
    • Code (Text):
      commands-warmup: 5
    • This also comes with additional changes to the lang.yml file adding three new messages under the General section.
    • Code (Text):
      General:
        itemWarmingUp: '&aThe item [%item%&a] is warming up . . .'
        itemWarming: '&aCommencing [%item%&a] execution in &2%timeleft%&a seconds.'
        itemWarmingHalted: '&cCommence of &4[&c%item%&4] &cexecution cancelled!'
  • New option commands-particle #213.
    • This will be used to either spawn a simple particle defined by the user using the following instance.
    • Code (Text):
      commands-particle: PARTICLE:LIFETIME
    • Example (Heart effect which is alive for 3 seconds);
    • Code (Text):
      commands-particle: HEART:3
    • Or you can spawn custom particles or launch projectiles defined under ItemJoin's EffectAPI. These effects will be added as requested, but currently, support only a firework projectile option as shown.
    • Code (Text):
      commands-particle: PROJECTILETYPE:STARTCOLOR:ENDCOLOR:PATTERN:LIFETIME
    • Example (Firework, start color black, end color red, burst pattern, detonation after 3 seconds);
    • Code (Text):
      commands-particle: FIREWORK:BLACK:RED:BURST:3
  • The variable %player_interact% has been readded.
    • This was formerly known as %hitplayer%.
    • This variable will be replaced by the player's name which was either right-clicked or left-clicked by the player wielding the item.
    • Added for the intention of being used with ItemCommands.
    • Example of use; /duel %player_interact% - which will execute the duel command specifying the player that was right-clicked. Also great for trading plugins.
  • Custom TabCompleter #228.
  • New itemflag vanilla-control
    • Allows the item to be given as a vanilla item although, commands, itemflags, and other ItemJoin features will still continue to function.
    • There will be no DataTags or ItemJoin item identifiers on the item, so the item can be given by another plugin (created by another plugin and given) and ItemJoin will still see it as an ItemJoin item.
    • The downside is that if players have access to color codes and lore modification plugins they can rename a regular item to an ItemJoin item and it will function as such. Use with caution.
  • New itemflag item-modifiable
    • This will prevent the specified item from being modified via an ANVIL or ENCHANTING.
  • New itemflag give-next
    • This will function similar to the Arbitrary slot idea, any item with a dedicated number slot from 0 to 35 with this itemflag will function as normal if the dedicated slot is empty. However, if it is full, it will give the item in the next available slot AFTER the preceding dedicated slot. The Arbitrary would simply give the item to the first available slot rather than the slot after the dedicated slot.
  • New itemflag drop-full
    • This simply gives the item the ability to drop itself onto the ground when attempting to give the item to the player. The item will drop if the player's inventory is full. This functionality works with any slot type including custom and arbitrary slots.
  • New command identifier swap-item
    • You can now change the item in your hand to another existing ItemJoin item. This will replace the existing item in your hand to another custom item, however, it will ignore the defined slot and place it in the exact slot the previous item existed in.
    • Example;
    • Code (Text):
      swap-item: ultra-item
  • Region-Enter clearing all items or only custom items #217.
    • Defining the Option RETURN under clear-items in the config.yml will allow the items cleared by region-enter to return when exiting the region.
    • You can either define ALL regions or specific regions separated by commas.
    • Code (Text):
        Region-Enter: true
    • Code (Text):
        Region-Enter: region1, region2
    • Code (Text):
        Options: RETURN
    • Code (Text):
        Options: PROTECT, RETURN
    • Make sure that your clear-items reflect the changes below;
    • Code (Text):
      Clear-Items:
        Type: ITEMJOIN
        Delay-Tick: 2
        Join: DISABLED
        World-Switch: DISABLED
        Region-Enter: DISABLED
        Options: PROTECT
        Bypass: OP
  • New Traditional Chinese and Simplified Chinese language files thanks to momoservertw for translating!
    • There are three options with these, you can set the Language located in the config.yml to either Simplified Chinese, Traditional Chinese or Just define Chinese which will automatically use the Traditional Chinese file.
    • Code (Text):
      Language: 'Chinese'
    • Code (Text):
      Language: 'Traditional Chinese'
    • Code (Text):
      Language: 'Simplified Chinese'
  • New Spanish language file thanks to ThatOverPowered for translating!
    • You can now set the Language option from English to Spanish as shown to generate the es-lang.yml
    • Code (Text):
      Language: 'Spanish'
Fixed:
  • Issues with skulls and custom databases, big resultant in major lag.
  • Subregions now properly work in all WorldGuard versions.
  • An issue with dropping items in creative mode using your cursor would reset the item's slot to the (first available slot), having this with the inventory-modify itemflag would lock the items position instead of placing it back to its default #208.
  • Bug with book items in Minecraft 1.14+ which caused an *invalid book tag* instead of the defined book pages.
  • Bug with offhand items occasionally not being given.
  • An issue with cancel-events not canceling all events properly #225.
  • A bug that would cause a slight delay when giving items through respawning, world-switch, limit-switch, and join despite the items-Delay being set to zero and having clear-items disabled #229.
  • Issues with skull items and the dynamic/animated itemflag bugging out resulting in a server crash.
  • Bug with skull items causing the plugin to break upon respawning on Minecraft 1.14+.
  • An issue with clear items not working properly.
  • An issue with disposable items not working properly, the order has been changed.
  • An issue with global prevents actions not functioning properly.
  • An issue with the itemjoin.bypass.inventorymodify permission node not working.
  • Map items completely breaking in legacy versions of Minecraft.
    • Typo with one of the reflections... whoops!
  • Added back the RANDOM commands-sequence.
    • Accidentally forgot to write it when developing v5.0.0 whoopsie!
  • Massively rewrote the crafting slot items.
    • All bugs pertaining to crafting slots should be fixed, however, using the RELOAD command may cause items to fall out of crafting slots during the reload period (will not be affected after reload).

Changed:
  • Pending commands now cancel upon player death, world-switch, and respawn #212.
  • ItemJoin now supports subregions and treats them as a respective subregion. Allowing the ability to give items in both the main region and any items once entering the subregion.
  • Now using a different method to fetch skull skins. Hopefully, this will be more accurate without having to ping the Mojang API.
  • When removing a disposable item, the held-item will be considered first then if it is not the correct item it will cycle from the first slot to the last slot of the inventory 0 ==> 35.
  • Since it seems like nobody uses Java 7 according to the bStats data... I have officially switched to now compile ItemJoin against Java 8!
  • Build numbers will now be displayed with each plugin version #232.
  • Listeners are now registered differently.
    • If a listener is deemed to not be needed as an item does not utilize its properties it will now simply never be loaded unless a config value is changed to make it needed.
    • This vastly decreases high timings in unutilized classes.
  • Legacy Material Data is now better supported.
    • Resolved issues with incorrect material's being set.
    • Resolved issues with error messages appearing.
    • A warning message will still display upon server start asking you to switch to the new 1.13+ material data.
  • softDepends are now hooked into automatically, thus no longer requiring users to set it to true in the config.yml.
    • Since the toggle options in the config.yml are no longer needed, they have been removed.
    • You will still see the depends that ItemJoin successfully hooks into upon plugin startup in the console window in terms "Utility Options" separated by commas.
  • Removed the command /itemjoin save
    • The GUI Creator now replaces this function.



[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Sep 23, 2019

[​IMG]

Please Note: Upon updating, the old en-lang.yml and config.yml file will be saved and a new one will be generated.

Also Note: Upon the reset of these config files, permissions to obtain items will be disabled by DEFAULT. This means all players will get any item despite lack of permissions. In order to use permissions, you will need to enable it in your config.yml--Permissions.Obtain-Items set this to true. I did this because I am tired of people asking why ItemJoin isn't working when they first install the plugin.

We have been stuck on version 6 of our configuration files for almost a year now so it is time for a little rework of the ugly config(s) layout. These changes will now allow me to easily add new features without the need for future config resets. Currently, there are no plans to reset the items.yml so that will stay on version 6.

Changelog

Added:
  • You can now specify [close] for all player, console, op, and default commands to close the player's inventory once the command is executed. This specifically closes the executing player's inventory, so despite it being executed by the console, it will close the player's inventory since obviously console does not have an inventory.
  • Example item using this feature;
  • Code (Text):
      example-item:
        id: FIREWORK_STAR
        slot: 0
        count: 6
        charge-color: BLUE
        commands:
          multi-click:
            - 'player: menu'
            - 'player: [close]'
        commands-type: interact
        commands-sound: BLOCK_NOTE_BLOCK_PLING
        itemflags: item-store, death-drops, self-drops, hide-attributes, disposable
        triggers: join, respawn, world-change
        enabled-worlds: world, world_nether, world_the_end
  • New Clear-Items delay (Delay-Tick). #202
    • Resolves issues with PerWorldInventory.
  • Implemented new MapMeta changes once again.
  • New Overwrite Itemflag
    • Allows the specified item that is given this itemflag to overwrite any item in the player's inventory.
    • This is like the itemsOverwrite in the items.yml (rather it is item specific).
    • This itemflag will take priority over the itemsOverwrite boolean.
  • New Time_Stamp row to the SQL Database. #199
    • Obviously old items will be marked with a NULL timestamp.
    • This is added to all first-join, first-world, and ip-limits items as well as first-command players.
    • Primarily useful via viewing the SQL Database but later will be implemented into ItemJoin's features.
    New Metrics support.
    • This can be disabled in the config.yml; General.Metrics-Logging: false.
    • When this is set to false, server data will not be sent.
    • When this is set to true, this anonymous sends data collected on your server to bStats so I (the developer) can see a various amount of variables. Such as; Player Count, Number of Servers, Java Versions, Server Versions, Etc. All of this is anonymous and does not send anything identifying about you or your server, to see what is logged view the stats page here; https://bstats.org/plugin/bukkit/ItemJoin
    • I encourage everyone to keep this set to true, as this will help me increase the quality of the plugin. and supported Minecraft versions.
Fixed:
  • /itemjoin getOnline command missing messages.
  • /itemjoin removeOnline command missing messages.
  • /itemjoin autoupdate command not even working due to dev-bukkit update.
  • Database issues in versions below Minecraft v1.13 (being unable to load database information into ram).
  • An issue with items.yml getting bugged with the original generation file changes.
    • This would happen if the config.yml or en-lang.yml was regenerated after you made changes to the items.yml, causing it to think that you are generating a new items.yml.
  • PlaceholderAPI issues.
  • /ItemJoin Reload command issues.
  • Issues with disposable items not functioning properly on versions below Minecraft v1.9.
  • Bug with arbitrary items not functioning properly.
    • If any of your arbitrary items have broken they will not be fixed until a new one is generated.
  • Mojang API connecting issues.

Changed:
  • Soft-depend list in the plugin.yml to reflect the actual optional dependencies that ItemJoin supports. #201
    • Was missing HeadDatabase and
    • Multiverse has been changed to Multiverse-Core.
  • Completely rewrote the updater class.
  • Messages have been completely rewritten and are now handled completely different.
  • en-Lang is now on version 7.
    • The English Language file has been completely rewritten and will now support easy language file changes. This making it less likely that this will be reset again in the future.
    • Remember the old language file will be saved in the ItemJoin folder before generating a new one.
  • config.yml is now on version 7.
    • The configuration settings have completely been rewritten and many have different names. This change will make it less likely that the config file will be reset again in the future.
    • Remember the old config file will be saved in the ItemJoin folder before generating a new one.
  • First-Join and First-World can now be defined under triggers instead of itemflags if chosen.
    • Defining them under triggers will have certain effects.
    • First-Join automatically applies the Join trigger.
    • First-World automatically applies the Join and WorldSwitch trigger.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Feb 25, 2019

[​IMG]


Changelog

Added:
  • New first-world itemflag.
    • This will give the specified item once per world for each player.
  • Ability to protect first-join and first-world items from being affected by the Clear-Items in the config.yml.
    • If this is set to true it will protect all first-join and first-world items from being cleared from the player's inventory if the ItemJoin option is selected.
    • Simply add this to your config.yml;
    • Code (Text):
      Protect-SpecialItems: true
  • Data-value identifier for the /itemjoin info command.
    • If you are using a version of Minecraft less than 1.13, it will now correctly display the data-value when using the info command.
    • This is temporarily a raw text output and will be added to the language file in the next update or two when the rework to the language file is pushed to the release branch.
  • Support for the new HeadDatabaseAPI changes.
    • HeadDatabase should now function properly once more!
  • New vanilla-status itemflag.
    • Applying this itemflag to an item will allow any item with the vanilla itemflag retain its functionality to ItemJoin without applying any NBTTags to the item.
    • This is useful for trying to implement items being used by other plugins so they can retain their functionality while also (not being given on every join).
Fixed:
  • HUGE memory leak with database files.
    • Every time the player would commit an action it would open and close the database connection causing a massive memory leak and high timing reports.
    • Everything has now been committed to memory so there will be no more memory leaks and a noticeable lag decrease.
  • Issues with the World System allowing items that were not defined for certain worlds accidentally ending up on the defined list.
  • Bug with skull-owners using the %player% variable #195.
  • Bug with items using the dynamic itemflag not working properly.
  • Bug with item commands not executing properly.
    Bug with first-world purge command not working.
  • Major bugs with the VaultAPI integration.
    • Also compiled with the new release of Vault-1.7.1.
  • Minor disposable item bug #196.
  • ItemCommand interacts bug #197.
  • HeadDatabase items forgetting that they are ItemJoin items.
  • Bug with vanilla items.
  • Random errors with the fail count message.

Changed:
  • The current first-join itemflag.
    • This now only gives the item on the first time joining the server, if you want to limit it to the first time on each specific world use the first-world itemflag.
  • The /itemjoin save command will now properly save the data-value for versions of Minecraft less than 1.13.
  • The database file has been completely rewritten with better accessibility, there should be no changes to current database files.
  • Cleaned up some useless code for better readability.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jan 27, 2019

[​IMG]
[​IMG]


Changelog

Added:
  • Map items now support GIF images (Animated).
  • Support for the new Vault API (1.13).
  • ReAdded the ItemJoinAPI.
    • It magically disappeared in the v5.0.0, whoops!
  • Once again, updated support for WorldGuards API revisions... #192
    • Stop removing methods and simply deprecate them, please and thanks!
Fixed:
  • Issues with Vault balance and new Economy plugins.
  • Errors with book items when they have no pages defined.
  • Ip-limit / first-join bug in debugging mode.
    • If the item was already given on first-join it would send a debug message as well as an actual message to the player saying it failed to give the item.
  • OPCommands-Permissions in the config.yml.
    • Was accidentally using the Items-Permissions in the config.yml instead of OPCommands.
  • An issue where, if enabled-worlds were not defined for an item it would default to disabled.
    • Now it correctly defaults to all worlds being enabled.
  • An issue where, if triggers were not defined for an item it would default to disabled.
    • Now it correctly defaults to on JOIN being the default trigger.
  • An issue where you were unable to specify multiple map items, each having a different rendered image.
  • An issue with commands where if two executors were defined at the same time both would execute upon committing an action that was defined under one of the two executors.
  • An issue with YAMLGenerator breaking the items.yml upon loading for the first time.
  • An issue with Crafting Slot items not playing friendly with GUI plugins, this would create ghost items.

Changed:
  • Rewrote map image functionality to resolve issues with images not appearing.
  • Compressed image files so the ItemJoin.jar file is a smaller size.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jan 1, 2019

[​IMG]

[​IMG]


Notes: I will be taking a short break after posting this update to spend time with family so the documentation will take a few days to update. Also, I know this update did not include the in-game GUI creator. The framework rewrite has taken up the majority of my time but this should allow future expansion in ItemJoins future. This new framework update was written because of the in-game GUI creator requirements, as ItemJoin lacked the capability of implementing it in the version two adaptation of ItemJoins framework.

Also, it seems like only a few people have bug tested this new release version of ItemJoin, so if anyone finds any bugs or issues please report it as soon as possible to the GitHub issues section.




Changelog

Added:
  • New Framework defined as ItemJoin v3.
    • This is huge and took so long to develop as it was created with the intention of having future expandability upon the new platform without hitting and major limitations in the plugin's code.
  • Support for the new WorldGuard API #186.
    • Updated to support new BlockVectors.
  • Support for the new WorldEdit API #186.
    • Updated to support new BlockVectors.
  • A new system for the item-store itemflag #190.
    • Item-Store now supports the Crafting Table.
  • New item-craftable itemflag #184.
    • This will block the usage of the specified ItemJoin item in a crafting recipe via the crafting table or the players own personal crafting menu. If an item using this itemflag is placed in either of those following locations the item will be automatically moved back to the first available slot of the player's inventory.
  • New item-repairable itemflag #184.
    • This will block the usage of the specified ItemJoin item in an anvil repair recipe.
    • If this itemflag is also used on a consumable recipe item such as a diamond the itemflag will still prevent the repair of an item.
  • Additional support for the item-store itemflag #183.
    • The item-store itemflag has the new addition blocking the storing of the specified ItemJoin item in droppers, dispensers, item-stands, llama chests, and donkey chests.
  • Command /itemjoin getOnline <item> #308398.
    • This will get the specified ItemJoin item for all players that are currently online.
  • Command /itemjoin getOnline <item> <amount> #308398.
    • This will get the specified amount of the ItemJoin item for all players that are currently online.
  • Command /itemjoin removeOnline <item> #308398.
    • This will remove the specified ItemJoin item from all players that are currently online.
  • Additional modifier <count> for the /itemjoin get <item> command(s) #188.
    • Example#1: /itemjoin get <item> <amount> - Gives the said amount of the item to the player, this bypasses the hasItem restriction.
    • Example#2: /itemjoin get <item> <player> <amount> - Gives the said amount of the item to the player, this bypasses the hasItem restriction.
  • New always-give itemflag #188.
    • This will always give the specified ItemJoin item when a player acts upon one of the defined triggers such as on join.
    • This itemflag also has a dual functionality, allowing the hasItem restriction bypass on the regular /itemjoin get <item> and /itemjoin get <item> <player> with no amount being specified.
  • New allow-modifications itemflag #308398.
    • Allows the item to still function as a normal ItemJoin item if the ENCHANTMENTS, BOOK PAGES, NAME, LORE, and item COUNT are modified by the player or a plugin.
  • New Prevent-InventoryModify global setting in the config.yml.
    • Prevents the movement of items in a players inventory.
    • If you have an old config.yml simply add this;
      Code (Text):
      Prevent-InventoryModify: false
  • New enabled-prevent-worlds global setting in the config.yml.
    • You can now specify ALL, GLOBAL, or specific worlds separated by commas for the prevent-settings to have effect in the specified world(s).
      If you have an old config.yml simply add this;
      Code (Text):
      enabled-prevent-worlds: ALL
  • Support for animated Material ID's, Data-Values, and Material Names.
    • If the animate itemflag is specified the item can now change its material to any specified material upon a delay interval.
    • An example item of glass panes changing colors;
    • Code (Text):
        filler-pane-item-example:
          id:
            1: '<delay:40>BLACK_STAINED_GLASS_PANE'
            2: '<delay:20>BLUE_STAINED_GLASS_PANE'
            3: '<delay:20>GREEN_STAINED_GLASS_PANE'
            4: '<delay:20>MAGENTA_STAINED_GLASS_PANE'
            5: '<delay:20>ORANGE_STAINED_GLASS_PANE'
            6: '<delay:20>RED_STAINED_GLASS_PANE'
          slot: Arbitrary, Arbitrary, Arbitrary, Arbitrary
          name: '&f'
          itemflags: inventory-modify, placement, animate
          triggers: join, world-change
          enabled-worlds: world, world_nether, world_the_end
  • .Hexacolor support for leather-color on dyed armor.
    • A usage example of the hexcolor string;
    • Code (Text):
          leather-color: f4d0ec
  • Support for animated skull-owners.
    • You can now animate between different skull-owners.
    • Code (Text):
        skull-item-example1:
          id: PLAYER_HEAD
          slot: 0
          skull-texture:
            1: '%player%'
            2: 'RockinChaos'
            3: 'Notch'
          itemflags: animate
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • Support for animated skull-textures.
    • You can now animate between different skull-textures (including support for HeadDatabase, via hdb-ID)
    • Code (Text):
        skulldb-item-example:
          id: PLAYER_HEAD
          slot: 0
          name: '&fCyclone'
          skull-texture:
            1: '<delay:100>eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMGZlMzFlYWE4YThhZDhkZDhkN2FiOTZhODQyMzI5MDUzOWQzODdkODJkNDI2ODcwMWVjNjlkNDFhMWZjIn19fQ=='
            2: '<delay:100>eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTYxZGZkZGE3MTAyMmJmYWQ3OWVhYmJmYTU2YTE1MTE2NDdiMjAyYWQxMTM2ZmY5N2UzMWEwNmRiYWMxMGVjYiJ9fX0='
            3: '<delay:100>eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGFmNjJkNjJkMGE5MzZmMDdmZGZjMWM2MDcyMTY4NzVjOTkzZTViZWViY2U5NTNlOWM4NzI0YTI1ZmNiYTBiYyJ9fX0='
          lore:
            - '&7This is a custom textured skull.'
            - '&7'
            - '&7You can create your own skull texture'
            - '&7and apply it to a skull item!'
          itemflags: inventory-modify, death-drops, self-drops, animate
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • Support for dynamically updated skull-owners and skull-textures
    • In the event that a skin texture changes this will be useful.
    • An example item;
    • Code (Text):
        skull-item-example:
          id: PLAYER_HEAD
          slot: 0
          skull-owner: '%player%'
          itemflags: animate
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • New ability to limit items to a specific gamemode.
    • If a limit-mode is set to a specific item, the player will only be given the items if they are in the defined gamemode upon an action defined by the triggers.
    • An example item that you can only get in SURVIVAL and ADVENTURE mode;
    • Code (Text):
        arrow-item-example1:
          id: ARROW
          slot: 0
          name: '&fArrow'
          count: 32
          limit-modes: SURVIVAL, ADVENTURE
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • New GAMEMODE-SWITCH trigger.
    • This works well with the limit-modes identifier, however, it will work without it.
    • If the player switches to a gamemode that is not defined in the limit-mode this trigger will remove the item from the player's inventory.
    • If the player is missing an item that is defined by the limit-modes it will be given if they are switching to the correct gamemode.
    • An example item that you can only get in and if you switch to CREATVE mode;
    • Code (Text):
        arrow-item-example:
          id: ARROW
          slot: 0
          name: '&fArrow'
          limit-modes: CREATIVE
          triggers: JOIN, GAMEMODE-SWITCH
          enabled-worlds: world, world_nether, world_the_end
  • JSON Books now can support raw data inputs.
    • If you have raw JSON data you can now put that as a page line to appear, for example, this would be useful for clickable hover text as shown in the example below.
    • Simply add the "raw: " identifier and paste the raw JSON data, this can include the ["" or exclude it. Please note that this only works for each separate line on each book page.
    • Code (Text):
        book-item-example:
          id: WRITTEN_BOOK
          slot: 0
          name: '&c&nCreating a Book'
          author: '&bItemJoin'
          lore:
            - '&7'
            - '&7This magical book is given on join!'
          pages:
            1:
            - 'raw: ["",{"text":"I am a hidden text!","color":"yellow","clickEvent":{"action":"open_url","value":"https://www.spigotmc.org/resources/itemjoin.12661/"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Click to visit the spigot page.","color":"blue"}]}}}]'
  • Support for Crafting item slots.
    • Crafting item slots will now be defined as such; CRAFTING[0], CRAFTING[1], CRAFTING[2], CRAFTING[3], CRAFTING[4].
    • Crafting slot identifiers can also support C[#] or C(#) instead of CRAFTING[#], as shown in the available slots image depicting C[#].
    • Example items using crafting slots;
    • Code (Text):
        diamond-item:
          id: DIAMOND
          slot: CRAFTING[1]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
        iron-item:
          id: IRON_INGOT
          slot: CRAFTING[2]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
        gold-item:
          id: GOLD_INGOT
          slot: CRAFTING[3]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
        redstone-item:
          id: REDSTONE
          slot: CRAFTING[4]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
  • Updated available slots to support the crafting slots.
[​IMG]
Fixed:
  • Animated items no longer have the requirement of needing both the item name and lore to animate.
    • If an item name was defined to animate and the item lore was undefined or not set to animate it would cause issues including console errors.
  • ServerSwitch defined in an items command would not send you to the server.
    • With the current identifier 'server:' there is now a 'serverswitch:' identifier.
  • Disposable items not functioning correctly #180, #185.
  • Bug with the item-store itemflag not blocking items if they were a non-block item when being placed in the instance of an item-frame.
  • Bug with the /itemjoin info command not correctly listing the items Material name.
  • Minor bug with offline skull owners.
    • Now requests data from Mojang directly and obtains the players UUID to generate the texture plating.

Changed:
  • Removed the data-value identifier.
    • The data-value for legacy Minecraft will now be combined in the item's id via 'ID:VALUE'.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Dec 26, 2018

[​IMG]

[​IMG]


Notes: I will be taking a short break after posting this update to spend time with family so the documentation will take a few days to update. Also, I know this update did not include the in-game GUI creator. The framework rewrite has taken up the majority of my time but this should allow future expansion in ItemJoins future. This new framework update was written because of the in-game GUI creator requirements, as ItemJoin lacked the capability of implementing it in the version two adaptation of ItemJoins framework.

Also, it seems like only a few people have bug tested this new release version of ItemJoin, so if anyone finds any bugs or issues please report it as soon as possible to the GitHub issues section.




Changelog

Added:
  • New Framework defined as ItemJoin v3.
    • This is huge and took so long to develop as it was created with the intention of having future expandability upon the new platform without hitting and major limitations in the plugin's code.
  • Support for the new WorldGuard API #186.
    • Updated to support new BlockVectors.
  • Support for the new WorldEdit API #186.
    • Updated to support new BlockVectors.
  • A new system for the item-store itemflag #190.
    • Item-Store now supports the Crafting Table.
  • New item-craftable itemflag #184.
    • This will block the usage of the specified ItemJoin item in a crafting recipe via the crafting table or the players own personal crafting menu. If an item using this itemflag is placed in either of those following locations the item will be automatically moved back to the first available slot of the player's inventory.
  • New item-repairable itemflag #184.
    • This will block the usage of the specified ItemJoin item in an anvil repair recipe.
    • If this itemflag is also used on a consumable recipe item such as a diamond the itemflag will still prevent the repair of an item.
  • Additional support for the item-store itemflag #183.
    • The item-store itemflag has the new addition blocking the storing of the specified ItemJoin item in droppers, dispensers, item-stands, llama chests, and donkey chests.
  • Command /itemjoin getOnline <item> #308398.
    • This will get the specified ItemJoin item for all players that are currently online.
  • Command /itemjoin getOnline <item> <amount> #308398.
    • This will get the specified amount of the ItemJoin item for all players that are currently online.
  • Command /itemjoin removeOnline <item> #308398.
    • This will remove the specified ItemJoin item from all players that are currently online.
  • Additional modifier <count> for the /itemjoin get <item> command(s) #188.
    • Example#1: /itemjoin get <item> <amount> - Gives the said amount of the item to the player, this bypasses the hasItem restriction.
    • Example#2: /itemjoin get <item> <player> <amount> - Gives the said amount of the item to the player, this bypasses the hasItem restriction.
  • New always-give itemflag #188.
    • This will always give the specified ItemJoin item when a player acts upon one of the defined triggers such as on join.
    • This itemflag also has a dual functionality, allowing the hasItem restriction bypass on the regular /itemjoin get <item> and /itemjoin get <item> <player> with no amount being specified.
  • New allow-modifications itemflag #308398.
    • Allows the item to still function as a normal ItemJoin item if the ENCHANTMENTS, BOOK PAGES, NAME, LORE, and item COUNT are modified by the player or a plugin.
  • New Prevent-InventoryModify global setting in the config.yml.
    • Prevents the movement of items in a players inventory.
  • New enabled-prevent-worlds global setting in the config.yml.
    • You can now specify ALL, GLOBAL, or specific worlds separated by commas for the prevent-settings to have effect in the specified world(s).
  • Support for animated Material ID's, Data-Values, and Material Names.
    • If the animate itemflag is specified the item can now change its material to any specified material upon a delay interval.
    • An example item of glass panes changing colors;
    • Code (Text):
        filler-pane-item-example:
          id:
            1: '<delay:40>BLACK_STAINED_GLASS_PANE'
            2: '<delay:20>BLUE_STAINED_GLASS_PANE'
            3: '<delay:20>GREEN_STAINED_GLASS_PANE'
            4: '<delay:20>MAGENTA_STAINED_GLASS_PANE'
            5: '<delay:20>ORANGE_STAINED_GLASS_PANE'
            6: '<delay:20>RED_STAINED_GLASS_PANE'
          slot: Arbitrary, Arbitrary, Arbitrary, Arbitrary
          name: '&f'
          itemflags: inventory-modify, placement, animate
          triggers: join, world-change
          enabled-worlds: world, world_nether, world_the_end
  • .Hexacolor support for leather-color on dyed armor.
    • A usage example of the hexcolor string;
    • Code (Text):
          leather-color: f4d0ec
  • Support for animated skull-owners.
    • You can now animate between different skull-owners.
    • Code (Text):
        skull-item-example1:
          id: PLAYER_HEAD
          slot: 0
          skull-texture:
            1: '%player%'
            2: 'RockinChaos'
            3: 'Notch'
          itemflags: animate
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • Support for animated skull-textures.
    • You can now animate between different skull-textures (including support for HeadDatabase, via hdb-ID)
    • Code (Text):
        skulldb-item-example:
          id: PLAYER_HEAD
          slot: 0
          name: '&fCyclone'
          skull-texture:
            1: '<delay:100>eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMGZlMzFlYWE4YThhZDhkZDhkN2FiOTZhODQyMzI5MDUzOWQzODdkODJkNDI2ODcwMWVjNjlkNDFhMWZjIn19fQ=='
            2: '<delay:100>eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTYxZGZkZGE3MTAyMmJmYWQ3OWVhYmJmYTU2YTE1MTE2NDdiMjAyYWQxMTM2ZmY5N2UzMWEwNmRiYWMxMGVjYiJ9fX0='
            3: '<delay:100>eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGFmNjJkNjJkMGE5MzZmMDdmZGZjMWM2MDcyMTY4NzVjOTkzZTViZWViY2U5NTNlOWM4NzI0YTI1ZmNiYTBiYyJ9fX0='
          lore:
            - '&7This is a custom textured skull.'
            - '&7'
            - '&7You can create your own skull texture'
            - '&7and apply it to a skull item!'
          itemflags: inventory-modify, death-drops, self-drops, animate
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • Support for dynamically updated skull-owners and skull-textures
    • In the event that a skin texture changes this will be useful.
    • An example item;
    • Code (Text):
        skull-item-example:
          id: PLAYER_HEAD
          slot: 0
          skull-owner: '%player%'
          itemflags: animate
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • New ability to limit items to a specific gamemode.
    • If a limit-mode is set to a specific item, the player will only be given the items if they are in the defined gamemode upon an action defined by the triggers.
    • An example item that you can only get in SURVIVAL and ADVENTURE mode;
    • Code (Text):
        arrow-item-example1:
          id: ARROW
          slot: 0
          name: '&fArrow'
          count: 32
          limit-modes: SURVIVAL, ADVENTURE
          triggers: join, respawn, world-change
          enabled-worlds: world, world_nether, world_the_end
  • New GAMEMODE-SWITCH trigger.
    • This works well with the limit-modes identifier, however, it will work without it.
    • If the player switches to a gamemode that is not defined in the limit-mode this trigger will remove the item from the player's inventory.
    • If the player is missing an item that is defined by the limit-modes it will be given if they are switching to the correct gamemode.
    • An example item that you can only get in and if you switch to CREATVE mode;
    • Code (Text):
        arrow-item-example:
          id: ARROW
          slot: 0
          name: '&fArrow'
          limit-modes: CREATIVE
          triggers: JOIN, GAMEMODE-SWITCH
          enabled-worlds: world, world_nether, world_the_end
  • JSON Books now can support raw data inputs.
    • If you have raw JSON data you can now put that as a page line to appear, for example, this would be useful for clickable hover text as shown in the example below.
    • Simply add the "raw: " identifier and paste the raw JSON data, this can include the ["" or exclude it. Please note that this only works for each separate line on each book page.
    • Code (Text):
        book-item-example:
          id: WRITTEN_BOOK
          slot: 0
          name: '&c&nCreating a Book'
          author: '&bItemJoin'
          lore:
            - '&7'
            - '&7This magical book is given on join!'
          pages:
            1:
            - 'raw: ["",{"text":"I am a hidden text!","color":"yellow","clickEvent":{"action":"open_url","value":"https://www.spigotmc.org/resources/itemjoin.12661/"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Click to visit the spigot page.","color":"blue"}]}}}]'
  • Support for Crafting item slots.
    • Crafting item slots will now be defined as such; CRAFTING[0], CRAFTING[1], CRAFTING[2], CRAFTING[3], CRAFTING[4].
    • Crafting slot identifiers can also support C[#] or C(#) instead of CRAFTING[#], as shown in the available slots image depicting C[#].
    • Example items using crafting slots;
    • Code (Text):
        diamond-item:
          id: DIAMOND
          slot: CRAFTING[1]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
        iron-item:
          id: IRON_INGOT
          slot: CRAFTING[2]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
        gold-item:
          id: GOLD_INGOT
          slot: CRAFTING[3]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
        redstone-item:
          id: REDSTONE
          slot: CRAFTING[4]
          itemflags: death-drops, self-drops
          triggers: join
          enabled-worlds: world, world_nether, world_the_end
  • Updated available slots to support the crafting slots.
[​IMG]
Fixed:
  • Animated items no longer have the requirement of needing both the item name and lore to animate.
    • If an item name was defined to animate and the item lore was undefined or not set to animate it would cause issues including console errors.
  • ServerSwitch defined in an items command would not send you to the server.
    • With the current identifier 'server:' there is now a 'serverswitch:' identifier.
  • Disposable items not functioning correctly #180, #185.
  • Bug with the item-store itemflag not blocking items if they were a non-block item when being placed in the instance of an item-frame.
  • Bug with the /itemjoin info command not correctly listing the items Material name.
  • Minor bug with offline skull owners.
    • Now requests data from Mojang directly and obtains the players UUID to generate the texture plating.

Changed:
  • Removed the data-value identifier.
    • The data-value for legacy Minecraft will now be combined in the item's id via 'ID:VALUE'.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Dec 26, 2018

[​IMG]


[​IMG]
[​IMG]


If you are reading this far then the following information should apply to you. ItemJoin has and always will be an all-in-one supported plugin for all versions of Minecraft. The 1.13 Aquatic update was not actually very damaging to any of ItemJoin's core code. It only had a few errors when checking for certain item id's such as skull items as well as since 1.13 does not have ItemID's, ItemJoin as of 1.13 will not support them. However, if you are running a lesser server version 1.7 - 1.12, ItemID's will continue to function as normal. This "backward compatibility" for ItemID's has been tested but not every item has been tested so if there is a bug found such as not receiving the correct item please inform me. ItemID's on Minecraft 1.13 will continue to function with ItemJoin but I highly recommend moving away from the use of this method as it can have the potential to break as spigot is updated.

So in essence, ItemJoin is marked in the plugin.yml as fully compliant to the 1.13 api-version which allowed me to easily program backward compatibility for 1.7 - 1.12. So it is simply still an easy drag and drop for any version of Minecraft from 1.7 - 1.13 and there are no values that need to be changed other than adjusting the items in the items.yml accordingly to have the correct Material. As of posting this update, I am also looking to fix up the documentation page to include each individual Minecraft versions documentations for spigot listed so you can see what Materials, Enchants, Sounds, Effects, etc, are available for each specific version. This will most likely be in the form of links found on the main page that redirect to these specific versions. Hopefully, this gives those who are interested an insight into what is going on. If you have any questions feel free to contact me.



Changelog

Added:
  • Support for Minecraft v1.13 Aquatic Update!
    • Despite md_5's statement that plugins will not be backward compatible, I am still continuing to design ItemJoin as an all-in-one backward compatible plugin. Therefore, this version supports Minecraft 1.13 as well as 1.12, 1.11, 1.10, 1.9, 1.8, and 1.7.
  • Updated WorldGuard dependency.
    • Now Support WorldGuard 7.0.0 and above.
    • Also supports backward compatability for WorldGuard versions below 7.0.0.
  • Specific items.yml files for each major Minecraft version.
    • When a new items.yml is generated it will generate a version specific to the Minecraft server version you are running so you will get the full tutorial of items rather than a bunch of errors in console stating to remove non-supported items for that version of Minecraft.
    • Much clean...
  • /ItemJoin get <item> command permissions.
    • You can now toggle this on, which is off by default in the config.yml. Simply set GetItem-Permissions to true.


If you are using a config or en-lang file before this update and wish to use this new feature you will need to add the following to your config.yml and en-lang.yml respectively;
Config.yml;
Code (Text):
GetItem-Permissions: false
en-lang.yml Messages;
Code (Text):
givenNoPerms: '&4You do not meet the permission requirement to receive the item %item%.'
givenToPlayerNoPerms: '&4%argsplayer% &4does not meet the permission requirement to receive the item %item%.'
givenAllNoPerms: '&4You were missing permissions for an item so not all items were given.'
givenAllPlayerNoPerms: '&4%argsplayer% &4was missing permissions for an item so not all items were given.'

  • New command /ItemJoin info.
    • This will determine the item's information of what you are holding.
    • I have implemented this to make it easier to look up the Material of the item you are holding via in-game rather than looking it up in spigots documentations.
    • Currently Material is the only option but this will expand as needed.
If you intend to use this new command you will need to add the following in your en-lang.yml if you have a previously generated one;
Code (Text):
itemInfo: '&aItem Material_TYPE; &b%item_type%'
noItemInHand: '&cYou are not holding an item in your hand!'
  • Option to disable the inventory bypass permission in the config.yml for those who use the * permission.
    • InventoryBypass-Permission: false to the config.yml
  • Full support for special characters.
    • YAML files have been converted to UTF-8 to better support a larger variety of special characters.
  • Support for JSON open_url.
    • You can now add clickable links to your JSON books.
Code (Text):
<hover type="open_url" value="https://www.spigotmc.org/resources/itemjoin.12661/">"Click to view ItemJoin."</hover>
  • Support for JSON run_command.
    • You can now add clickable text to run commands.
Code (Text):
<hover type="run_command" value="/say ItemJoin is so AMAZING!">"Click to run a Command."</hover>

Fixed:
  • Placement itemflag not working for skull items.
  • Placement itemflag not working when placing non-block items in item-frames.
  • Console command errors when executing /itemjoin get <item> <player>
  • Removeall command messages not being received correctly.
  • RemoveAll command errors when executing as console.
  • Splash Potions not being enabled in Minecraft v1.8.8.
  • GameProfile bugs with Skull Items in Minecraft v1.7.
    • Minecraft v1.7 does not support offline skull owners, therefore the player specified as the skull owner will need to have previously joined the server in order to receive the player's skin.
Changed:
  • ItemID's as of Minecraft v1.13 is no longer supported, if you use a lesser version of Minecraft [v1.7 - v1.12] then ItemID's will continue to function.
    • ItemID's have been removed from Minecraft as well as Spigot/Craftbukkit's API as of the v1.13 Aquatic Update.
    • ItemID's in Minecraft v1.13 will technically still work using the conversion method I have added but it is recommended to switch away from old ItemID's as soon as possible. I have added this conversion method to prevent your items.yml from blowing up when you upgrade an old config file to v1.13.
    • Again please note; I really recommend no longer using item id's with ItemJoin as it can cause issues, more specifically you receiving the wrong item or no item at all.
  • Updated configuration files to have the correct data-values and material names to function normally on Minecraft v1.13.
  • Completely reworked the Items Commands to optimize performance.
  • Completely reworked map items to optimize performance and to fix rendering issues.
    • Map_ID's will no longer be used because of this, now uses the next available map-id to prevent map-id conflictions with other plugins.
    • Map items will no longer have their image flicker when another player joins the server.
    • Map items will no longer have their image permanently disappear when another player joins the server.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Aug 1, 2018

[​IMG]
[​IMG]


This update has taken quite a while and contains a lot of bug fixes, new features, and large optimizations.
You will notice that most of the changes in this build are bug fixes. The next release should be the major release for Minecraft 1.13 update in the following couple of weeks, really depends on when we get hints that its release date is approaching.

Please note not all of these changes will appear in the documentation right away. I tried to provide as much information as I could in the update's changelog. I will be working over the next few days to update the documentation to reflect these changes.




Changelog

Added:
  • New database.db file, this will now be the hub for all data-storing by ItemJoin.
    • All of the first-join and ip-limit data has been moved to here.
    • Currently, first-join, ip-limit, enabled/disabled players, and first-join commands are stored here. As more features get added more data will be stored in this file.
    • Contains all needed info such as first-joins, ip-limits, global message first-join usages, and first command uses for items. (one-use identifier).
    • All first-join.yml data and ip-limit.yml data (if any exist) will be automatically moved onto the database.db file without losing data upon starting the server. Once the conversion is complete those two YAML files will be backed up under /ItemJoin/backup encase a reversion was needed.
  • New command(s) /itemjoin enable and /itemjoin disable - Globally enable/disable the use of ItemJoin for all users in all worlds.
  • New command(s) /itemjoin enable <player> and /itemjoin disable <player> - Enables/Disables the use of ItemJoin items for that user.
  • New command(s) /itemjoin enable <player> <world> and /itemjoin disable <player> <world> - Enables/Disables the use of ItemJoin items for that user in that specific world.
  • New Item Probabilities identifier to the items.yml, you can now define certain items with a probability to be put into a lottery, then the item that won will be given to the player.
    • Items that do not have probabilities defined will be automatically given to the player.
    • If the item has a probability, only one of those items can be given.
    • You can define items with an without probability to be given together in a friendly manner.
    • Items probability are based on weight rather than a percentage, so you can use any number as long as it is a positive integer.
    • If you define any item(s) without a probability, the item(s) will be given along with the item that wins the probability roll.
    • This also works for adding additional slots, so if the item that was chosen has multiple slots those multiple slots will be given if its a multi-slot item.

[​IMG]


Example of random items to be given (as shown in the example image);
Code (Text):
items:
  sword-of-a-god:
    id: DIAMOND_SWORD
    slot: 0
    name: '&eYou have been chosen..'
    probability: 15
    triggers: join, world-change
    enabled-worlds: world, world_nether, world_the_end
  herobrine-apple:
    id: GOLDEN_APPLE
    slot: 0
    name: '&cHerobrine Apple'
    probability: 55
    enabled-worlds: world, world_nether, world_the_end
  filler-pane-item-four:
    id: DIAMOND_PICKAXE
    slot: 0
    name: '&fUseless Pickaxe'
    probability: 110
    triggers: join, world-change
    enabled-worlds: world, world_nether, world_the_end



  • New commands-sequence identifier to the items.yml, you can now specify either RANDOM or ALL to either execute one of the commands RANDOMly given an even percentage between each command or execute ALL commands (normally). There is also the option to execute the commands as SEQUENTIAL, however, this technically doesn't do anything different it just executes the commands in order.
    • Note; you do not have to add commands-sequence if you just simply want all the commands to execute as normal in a "sequential order".
[​IMG]

Example of a item with RANDOM commands (as shown in example image);
Code (Text):
 random-item:
    id: EMERALD
    slot: 0
    name: '&aRandomizer'
    commands:
      multi-click:
        - 'message: &eCOMMAND 1'
        - 'message: &eCOMMAND 2'
        - 'message: &eCOMMAND 3'
        - 'message: &eCOMMAND 4'
        - 'message: &eCOMMAND 5'
    commands-type: interact, inventory
    commands-sound: BLOCK_NOTE_PLING
    commands-sequence: RANDOM
    commands-cooldown: 5
    cooldown-message: '&7[&eItemJoin&7] &a[%item%&a] &cis on cooldown for &a%timeleft% &cseconds..'
    triggers: join, respawn, world-change, region-enter
    permission-node: 'itemjoin.ultra'
    enabled-worlds: world, world_nether, world_the_end

Example of a item with ALL commands;
Code (Text):
  allcmds-item:
    id: EMERALD
    slot: 0
    name: '&aAll Commands'
    commands:
      multi-click:
        - 'console: gamemode 1 %player%'
        - 'message: &eYou have been set to creative mode.'
    commands-type: interact, inventory
    commands-sound: BLOCK_NOTE_PLING
    commands-sequence: ALL
    commands-cooldown: 5
    cooldown-message: '&7[&eItemJoin&7] &a[%item%&a] &cis on cooldown for &a%timeleft% &cseconds..'
    triggers: join, respawn, world-change, region-enter
    permission-node: 'itemjoin.ultra'
    enabled-worlds: world, world_nether, world_the_end


  • New ItemJoinAPI, You can now as a plugin developer give all ItemJoin items to a player by hooking into ItemJoin's new API.
    • The new API is located under me.RockinChaos.itemjoin.ItemJoinAPI, there is currently only one method; me.RockinChaos.itemjoin.ItemJoinAPI.getAllItems(player)
    • If you wish to see a method added feel free to submit a request on GitHub!
  • New Permission itemjoin.bypass.inventorymodify - Allows the player to bypass the itemflag inventory-modify if the item has said itemflag.
    • Players will be able to freely move items with this permission.

  • New %argsplayer_world% placeholder for specific en-lang.yml messages.

  • New vanilla itemflag - Allows the giving of default unmodified no-name items.
    • With this vanilla itemflag certain itemflags will still work such as; (list itemflags)
    • Commands will also work with vanilla items.
    • Please note if you choose to use commands, all other vanilla items that are the same material type will act like ItemJoin items since they are regular vanilla items and ItemJoin cannot determine the difference between them. That being; they will still execute commands and if you had inventory-modify itemflag on those items would not be movable.

  • New command /itemjoin purge - Deletes all data and resets the database file.
    • This will not cause any issues, it just simply resets all the player data from the database file, such as all first-join players, ip-limit, enabled/disabled players, and first-join commands.

  • New command /itemjoin purge first-join <player> - Deletes all data for first-join itemflag for that player from the database file.

  • New command /itemjoin purge ip-limits <player> - Deletes all data for ip-limit itemflag for that player from the database file.

  • OPItems-Permissions to the config.yml - Setting this to true will require ops to have each item's permissions in order to receive them.

  • OPCommands-Permissions to the config.yml - Setting this to true will require ops to have each commands permissions or itemjoin.all or itemjoin.* in order to use each command. Ops will not get each command by default if this is set to true.
    • itemjoin.(reload, updates, autoupdate, creator, purge, save, get, get.others, remove, remove.others, enable, enable.others, disable, disable.others, list) are no longer given to oped players by default, you will now have to set OPCommands-Permissions in the config.yml to false to allow ops to get these commands by default (however this is the default selected setting, setting it to true will require ops to be given these permissions).

  • With the addition of the new commands, multiple new help pages have been added to /itemjoin help.

  • The following has been added to the en-lang.yml.
    • If you are interested in using any of the new commands mentioned above or the new items-gui creator, it is recommended to add these to your lang file.

Needs to be added;
Code (Text):
databasePurged: '&aYou have purged the database file of %purgedata%!'
databasePurgeWarn: '&aPurging the database will delete &cALL &a%purgedata%.'
databasePurgeConfirm: '&aYou have 5 seconds to type &e%command% &aagain to confirm you wish to purge the database.'
databasePurgeTimeOut: '&cYou did not confirm the database purge within 5 seconds, purge canceled!'
enabledForPlayerWorld: '&aYou have &eenabled &7[&e%world%&7] items &afor &e%player%&a.'
enabledForOtherWorld: '&a%player% has &eenabled &7[&e%world%&7] items for you.'
enabledForPlayerWorldFailed: '&4You have already &eenabled &7[&e%world%&7] items &4for &e%player%&4.'
disabledForPlayerWorld: '&aYou have &edisabled &7[&e%world%&7] items &afor &e%player%&a.'
disabledForOtherWorld: '&a%player% has &eenabled &7[&e%world%&7] items for you.'
disabledForPlayerWorldFailed: '&4You have already &edisabled &7[&e%world%&7] items &4for &e%player%&4.'
enabledForPlayer: '&aYou have &eenabled &aall items for &e%player%&a.'
enabledForOther: '&a%player% has &eenabled &aall items for you.'
enabledForPlayerFailed: '&4Items have already been &eenabled &4for &e%player%&4.'
disabledForPlayer: '&aYou have &edisabled &aall items for &e%player%&a.'
disabledForOther: '&a%player% has &edisabled &aall items for you.'
disabledForPlayerFailed: '&4Items have already been &edisabled &4for &e%player%&4.'
enabledGlobal: '&aYou have &eenabled &aall items for &eall players&a.'
enabledGlobalFailed: '&4Items have already been &eenabled &4for &eall players&4.'
disabledGlobal: '&aYou have &edisabled &aall items for &eall players&a.'
disabledGlobalFailed: '&4Items have already been &edisabled &4for &eall players&4.'

Fixed:
  • Console errors with Paper Spigot, mostly when sending ItemJoin messages.
    • This also was a common occurrence on Spigot/Bukkit (1.12) #157.
  • Random bug with count-lock on items that cannot be used or placed #155.
  • Issue with custom book items removing certain commas or spaces randomly.
  • Permission issue with itemjoin.world.* not working with LuckPerms, it was being recognized as itemjoin.craftworld{name=world_lobby}.* #162.
  • Issues with CustomPermissions.
  • Issue with NoSuchMethodError in Minecraft 1.8-1.8.8, mainly persisting with item frames.
  • Errors when using /itemjoin get item <player>.
  • Issues where commands would still execute when clicking an object managed by another plugin, such as a ServerSign. #163.
  • Issues with commands and placeholder updating when returning a non-existent player. #161.
  • Issues with world names that have spaces in them.
    • Items would not appear. ex; 'Cool World' instead of 'Cool_World' which is usually the proper format.
  • Items not being "unique" enough.
    • Added another NbtTag that contains the items identifier from the items.yml.
    • If you had more than one item defined in the same slot it would execute commands from the wrong item. Usually, it would use the command from the first item defined in the slot even if that item is not the item being executed.
  • Bug with an item executing another items commands if it had the same slot as the other item, sort-of related to the items not being "unique" enough.
  • Bug with commands multi-executing if you spammed both right and left click at the same time.
  • Bug with commands in adventure mode, if you were to left click specifically on a block the command would not execute. It is now set to listen for a players arm swing in adventure mode only.
  • Clear-Items not working if set to ItemJoin only items, issue had occurred with the new NbtTag System being implemented.
  • Versions of Minecraft below 1.8 causing items to disappear if you were to click them in creative mode.
    • Was more of an issue with the server rather than ItemJoin since there was a lot of bugs in Minecraft 1.8 that never got fixed, so I created a workaround for ItemJoin.
  • Issue with /itemjoin get <item> not working if you had already had first-join the server and it had the first-join itemflag.
    • Same issue occurred with count-lock and placement itemflag items.
    • This bug would prevent you from getting the item in general.
  • Bug with /itemjoin get <player> <item> and a few other en-lang.yml messages not sending the items name correctly if it was an animated item.
  • Bug with /itemjoin remove <player> <item> and a few other en-lang.yml messages not sending the items name correctly if it was an animated item.
  • Issues similar to LuckPerms, permissions for all other similar permission plugins have been fixed. Permissions will now correctly register.
  • NBTData for the NewNBT System on only Minecraft 1.8 throwing a lot of errors, somehow Material.AIR was getting in there!
  • A bug with items-Overwrite where if you didn't get the item because there was an item that couldn't be overwritten it will no-longer put you on the first-join list until you get the item.
    • To better clarify, if you are unable to receive the first-join item you will no longer be written to the database file as if you had received it.
  • Another bug with items-Overwrite to where if you already got the first join item and another item is placed in that slot it would say cannot overwrite when you cant even receive the item anyway because you already first joined. So that message is fixed and will no longer appear.
  • Other random command errors.
Changed:
  • The items-Overwrite in the items.yml can now be specified per-world instead of globally. Simply remove the true/false statement and put the name or world or world(s) separated by a comma.
    • All worlds that are defined will be the worlds that ItemJoin can overwrite items in.
Example of overwriting in specific worlds;
Code (Text):
items-Overwrite: world, world_the_end
Example of disabling all item overwrites in all worlds;
Code (Text):
items-Overwrite: false
Example of enabling all item overwrites in all worlds;
Code (Text):
items-Overwrite: true
  • The NewNBT-System implementation was cleaned up and should function a lot better now.
    • If you are not using the NewNBT-System I really recommend switching to it especially if you are using ItemJoin for more advanced inventory modifications.
Code (Text):
NewNBT-System: true
  • Custom Book Items have been completely rewritten and now have a new structure.
    • Custom books now support JSON events #146.
    • Books support all PlaceholderAPI placeholders, as well as default ItemJoin internal placeholders.
    • NOTE; JSON events such as hover/etc will not work on MC 1.7 and below as Minecraft does not support it for books. (Text Components)
[​IMG]

Example of a custom book item;
Code (Text):
  book-item:
    id: WRITTEN_BOOK
    slot: 6
    name: '&c&nCreating a Book'
    author: '&bItemJoin'
    lore:
      - '&7'
      - '&7This magical book is given on join!'
    pages:
      1:
      - '&bYou can get this book on join!'
      - '&aThis book also supports &ccolor codes!'
      - ''
      - '&cHow do custom books work?'
      - ''
      - '&0You can set an &cauthor&0'
      - '&0as shown in the items.yml'
      - '&0I set it to &bItemJoin.'
      - ''
      - '<hover type="text" value="%player% of course!">"What is your name?"</hover>'
      2:
      - '&cHow do you create a new page?'
      - ''
      - '&0As displayed to the left in the items.yml'
      - '&0Create a number to specify the new page number.'
      - '&cMakesure you put each number in order as shown.'
      - '&cCreating new pages should be pretty'
      - '&cstraight forward for copying and pasting.'
      - '&bItemJoin &0by RockinChaos!'
    enabled-worlds: world

Removed:
  • The itemjoin.WorldName.* and itemjoin.WorldName.Name from the plugin.yml as it did nothing but cause issues with certain permission plugins.
    • Please note these permissions are still utilized by ItemJoin and in order to get items you will need to use these permissions as such; itemjoin.yourworldname.* or for specific items itemjoin.yourworldname.itemname.
    • I had removed these from the plugin.yml because they were just placeholder permissions that were just an example and aren't permanent permissions as they constantly change based on your worlds name and items name. These specific permissions are handled within ItemJoins code rather than the plugin.yml. I hope that makes sense..
  • The first-join.yml - If you already have a first-join.yml generated the old info will be converted to the database.db and no data will be lost.
    • All converted data will be backed up under /ItemJoin/backup encase a reversion was needed.
  • The ip-limit.yml - If you already have a ip-limit.yml generated the old info will be converted to the database.db and no data will be lost.
    • All converted data will be backed up under /ItemJoin/backup encase a reversion was needed.
[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, May 26, 2018

| ItemJoin v4.7 |
___________________


If you haven't already please make sure you read ItemJoin v4.6 Changelog!



Changelog
Fixed:
  • /ItemJoin reload, will no longer throw errors when executed from console.
  • Few Optimizations.
  • Bug fixes.


[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jan 10, 2018

| ItemJoin v4.6 |
_____________________________________________________________________
| New Features | Overwhelming Update | Large Bug Fixes |


This update has taken a lot of time and I apologize for not posting updates more frequently. My reasoning for this is ItemJoin v4.5 was stable enough to wait for a full release of ItemJoin v4.6. I have also been in my fall quarter at college so that has also taken up a lot of my time with exams. Thank you for understanding and all of the wonderful support, I hope you all enjoy the update!

Please note not all of these changes will appear in the documentation right away. I tried to provide as much information as I could in the update's changelog. I will be working over the next few days to update the documentation to reflect these changes.

It is recommended to start with new with fresh ItemJoin YAML files by copying your old ones and deleting the ItemJoin folder however, if you do not wish to do this and you want to use these new features simply add what you are told to for each feature down below, it will say "if you are using an old config file..". I decided not to force a YAML file reset this update as I was requested not to do so.




Changelog

Added:
  • Support for Spigot/CraftBukkit 1.12.2
  • Support for Custom Banners
    • You can now create custom banners, all you have to do is set your item's id to BANNER and add the banner-meta identifier as shown below.
    • banner-meta was added to the items.yml for the banner item and works as such, COLOR:PATTERN. You can add multiple Colors and Patterns to create some amazing effects, just separate them by commas. You can create almost anything if you set them in the right order.
    • Supports these Colors.
    • Supports these Patterns.


[​IMG]
Here is the Banner Meta used to create the banner in the images;
Code (Text):
    banner-meta: RED:HALF_HORIZONTAL, BLACK:RHOMBUS_MIDDLE, RED:STRIPE_TOP, WHITE:STRIPE_BOTTOM, BLACK:STRIPE_MIDDLE, WHITE:CIRCLE_MIDDLE

Example Item;
Code (Text):
  banner-item:
    id: BANNER
    slot: 0
    banner-meta: BLUE:BASE, WHITE:CREEPER
    enabled-worlds: world, world_nether, world_the_end

  • Support for Dynamic / Static items
    • Added dynamic itemflag.
    • Added <delay:ticks> option to items names and lore to the items.yml. This is the amount of time in ticks between each time the item updates. Example; Every 20 ticks(s) the item will update, 20 ticks = 1 second(s). '<delay:20>NameTextHere'
    • Giving an item the dynamic itemflag will allow items to update, Such as when an economy balance changes or a countdown timer.
    • Dynamic items are items that update periodically when there is a change to the item(s) name or lore, that being placeholders. These could also be interpreted as "live" items.
    • Dynamic items will even go as far to continue to update even when the item is stored, as well as duplicates of the item such as splitting up the stack will still continue to update.
    • Please note: The lower you set the ticks the harsher it could be on your server performance, this has not been proven but logically it will depend on your server specs, if you have a computer with decent specs then you will be fine. It is not recommended to set your ticks any lower than 3 ticks otherwise there could be a decrease in server performance.
    • Also note: If you have to update the item any faster (less than) 20 ticks and you are running Spigot, you will need to edit your spigot.yml in your server folder and set item-dirty-ticks to 1, this limitation does not exist in CraftBukkit so you will not have to worry about it.
To use this feature you will need to add the following lines to your items.yml;

Add <delay:TimeInTicks> to the beginning of the items name and if you want to dynamically update the lore put it on the first line of the lore as well, if the item has the dynamic itemflag but does not have the delay put in the name or lore, it will automatically be set to update every 20 ticks/1 second(s).
Code (Text):
<delay:20>
Name example;
Code (Text):
    name: '<delay:120>&a%server_online% Player(s) Online'
Lore example;
Code (Text):
    lore:
      - '<delay:20>&7Current Server Uptime Is; %server_uptime%'
      - '&7%server_online% player(s) online.' #// This line does not need a delay, as the delay is uses it the first line of the lore (above).
Usage;
Code (Text):
    itemflags: dynamic


Example Item;
Code (Text):
  dynamic-item:
    id: WATCH
    slot: 0
    name: '<delay:120>&a%server_online% Player(s) Online'
    lore:
      - '<delay:20>&7Current Server Uptime Is; %server_uptime%'
      - '&7%server_online% player(s) online.' #// This line does not need a delay, as the delay is uses it the first line of the lore (above).
    itemflags: dynamic, inventory-modify, hide-attributes
    enabled-worlds: world, world_nether, world_the_end



[​IMG]


  • Support for Animated items!
    • Animated items are backed by the dynamic options meaning, Animated items also use the same settings, just a different structure.
    • Added animate itemflag.
    • Also uses <delay:ticks> option to items names and lore to the items.yml. This is the amount of time in ticks between the different iterations in the name or lore as shown in the example code below. Example; Every 20 ticks(s) the items will update, 20 ticks = 1 second(s). '<delay:20>NameTextHere'
    • Giving an item the animate itemflag will allow items to update, switching between the different name and lore iterations.
    • Animated items are items that update periodically when there is a change to the item(s) name or lore, the name and lore can change to anything you desire after each delay!
    • Animated items will even go as far to continue to animate even when the item is stored, as well as duplicates of the item such as splitting up the stack will still continue to animate.
    • Please note: The lower you set the ticks the harsher it could be on your server performance, this has not been proven but logically it will depend on your server specs, if you have a computer with decent specs then you will be fine. It is not recommended to set your ticks any lower than 3 ticks otherwise there could be a decrease in server performance.
    • Also note: If you have to update the item any faster (less than) 20 ticks and you are running Spigot, you will need to edit your spigot.yml in your server folder and set item-dirty-ticks to 1, this limitation does not exist in CraftBukkit so you will not have to worry about it.
To use this feature you will need to add the following lines to your items.yml;

Add <delay:TimeInTicks> to the beginning of the items name and if you want to animate lore put it on the first line of the lore as well, if the item has the animate itemflag but does not have the delay put in the name or lore, it will automatically be set to update every 20 ticks/1 second(s).
Code (Text):
<delay:20>

Usage;
Code (Text):
    itemflags: animate
Below you can see the new structure for changing the name and lore. Each line has a delay of 3 ticks, this delay takes effect after the first delay/name change. So say you are going from name 1: to name 2:, the delay would be the original delay + the 2nd delay, making it so the 2nd name change will take effect 3 ticks after the first name change is applied.

Example Item;
Code (Text):
  animated-item:
    id: COMPASS
    slot: 18
    name:
      1: '<delay:3>&f&lSearch'
      2: '<delay:3>&b&lS&f&learch'
      3: '<delay:3>&b&lSe&f&larch'
      4: '<delay:3>&b&lSea&f&lrch'
      5: '<delay:3>&b&lSear&f&lch'
      6: '<delay:3>&b&lSearc&f&lh'
      7: '<delay:3>&b&lSearch'
      8: '<delay:3>&f&lS&b&learch'
      9: '<delay:3>&f&lSe&b&larch'
      10: '<delay:3>&f&lSea&b&lrch'
      11: '<delay:3>&f&lSear&b&lch'
      12: '<delay:3>&f&lSearc&b&lh'
    lore:
      1:
      - '<delay:3>&f&lColors!!!'
      2:
      - '<delay:3>&c&lC&f&lolors!!!'
      3:
      - '<delay:3>&c&lC&a&lo&f&llors!!!'
      4:
      - '<delay:3>&c&lC&a&lo&5&ll&f&lors!!!'
      5:
      - '<delay:3>&c&lC&a&lo&5&ll&3&lo&f&lrs!!!'
      6:
      - '<delay:3>&c&lC&a&lo&5&ll&3&lo&1&lr&f&ls!!!'
      7:
      - '<delay:3>&c&lC&a&lo&5&ll&3&lo&1&lr&e&ls&f&l!!!'
      8:
      - '<delay:3>&c&lC&a&lo&5&ll&3&lo&1&lr&e&ls&d&l!&f&l!!'
      9:
      - '<delay:3>&c&lC&a&lo&5&ll&3&lo&1&lr&e&ls&d&l!&a&l!&f&l!'
      10:
      - '<delay:3>&c&lC&a&lo&5&ll&3&lo&1&lr&e&ls&d&l!&a&l!&2&l!'
      11:
      - '<delay:3>&f&lC&a&lo&5&ll&3&lo&1&lr&e&ls&d&l!&a&l!&2&l!'
      12:
      - '<delay:3>&f&lCo&5&ll&3&lo&1&lr&e&ls&d&l!&a&l!&2&l!'
      13:
      - '<delay:3>&f&lCol&3&lo&1&lr&e&ls&d&l!&a&l!&2&l!'
      14:
      - '<delay:3>&f&lColo&1&lr&e&ls&d&l!&a&l!&2&l!'
      15:
      - '<delay:3>&f&lColor&e&ls&d&l!&a&l!&2&l!'
      16:
      - '<delay:3>&f&lColors&d&l!&a&l!&2&l!'
      17:
      - '<delay:3>&f&lColors!&a&l!&2&l!'
      18:
      - '<delay:3>&f&lColors!!&2&l!'
      19:
      - '<delay:3>&f&lColors!!!'
    itemflags: animate, death-drops
    triggers: join
    enabled-worlds: world

[​IMG]


  • Support for Custom Head Textures
    • Okay so! This has taken a lot of time for me to develop so hopefully this will be put to some amazing use.
    • My system mainly works off of http://minecraft-heads.com, however, it will work for any URL as long as its encoded in Base64, as shown in the screenshots minecraft-heads.com already supplies the needed texture for you so not many people will have to worry about it.
    • Added skull-texture to the items.yml to custom skull items as shown below you just have to copy the texture value from minecraft-heads.com into the skull-texture on the skull item.
    • If you are using a skull-texture do not define a skull-owner.


Here is a random head I found at; minecraft-heads.com, copy the code supplied from them.

[​IMG]

This is the code I copied all spaced out so you can see what everything is.
[​IMG]

This is what you need from the code highlighted in red. Make sure you copy this.

[​IMG]

Paste the code as shown below into the skull-texture identifier.
[​IMG]

Shown working with the Cauldron as well as another random skull texture I found.
[​IMG]



Example Item;
Code (Text):
  skull-item:
    id: SKULL_ITEM
    slot: 0
    skull-texture: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMGZlMzFlYWE4YThhZDhkZDhkN2FiOTZhODQyMzI5MDUzOWQzODdkODJkNDI2ODcwMWVjNjlkNDFhMWZjIn19fQ=='
    enabled-worlds: world, world_nether, world_the_end

  • Support for HeadDatabase (API)
    • As shown above, I had added the skull-texture identifier to the items.yml, all you need to do it put hdb-<head id> inside the skull-texture identifier.
Usage;
Code (Text):
    skull-texture: 'hdb-<head id>'
    skull-texture: 'hdb-4320'


Example Item;
Code (Text):
  skull-item:
    id: SKULL_ITEM
    slot: 0
    skull-texture: 'hdb-4320'
    enabled-worlds: world, world_nether, world_the_end

  • Support for first-join identifier for global commands.
    • Adding this to your command line in the global commands located in the config.yml will allow you to execute that command the first time the player enters each world. (First time the player joins the server).
Usage;
Code (Text):
  - 'first-join: say This is a command only executed once per world, per player.'
Example;
Code (Text):
#// Global Commands for ItemJoin on join, these commands are executed by console. //#
enabled-global-commands: true
enabled-worlds: world, world_nether
global-commands:
  - 'itemjoin get <item> <player>'
  - 'first-join: say This is a command only executed once per world, per player.'

  • Support for being able to define what worlds you want to clear-on-join and clear-on-worldchanged certain items for the Global Settings.
    • These are located in the config.yml and are set to false by default, you can set these to true to enable clear-on-worldchanged and/or clear-on-join in all worlds.
    • The new option is that you can now simply put the world names separated by spaces for both of these if you are looking to only clear the items of specific worlds. If you don't want to clear any items, including non-ItemJoin items, simply set the options to false.
Usage;
Code (Text):
Clear-On-Join: world, world_the_end
Clear-On-WorldChanged: world_nether
Example (ItemJoin Only Items);
Code (Text):
#// Global Clear Items for ItemJoin. //#
#// Set Clear-Items to ItemJoin or to All, ItemJoin clears only the ItemJoin items and All will clear all items. //#
#// If you want one of these functions to only clear specific worlds, replace false with the world names separated by commas.  //#
Clear-Items: ItemJoin
Clear-On-Join: world, world_the_end
Clear-On-WorldChanged: world_the_nether
AllowOPBypass: false
CreativeBypass: false

For those who still don't know, you can either clear ALL items from the players inventories, or you can clear only ITEMJOIN items, Just change Clear-Items to either of the two options shown;
Code (Text):
Clear-Items: ItemJoin
OR
Clear-Items: All

  • New Skull Methods that were added in Spigot 1.12.2, "Fixed Deprecation's".
    • This should help with any skull issues.
    • I have also added my own skull method, this now allows you to be able to fetch player heads from players who have never joined the server before, such as Notch. Without having to use custom skull-textures.
    • Caching player's heads should now no longer be limited by Mojang's skin API.
    • ItemJoin will now fetch all player's skulls directly from Mojang and storing the skin so players skins will always be rendered and not limited!
  • New workaround for Minecraft v1.8 drop events, (Minecraft v1.8 bug Causing the item not to return to the original slot it was dropped from).
  • Enabling debugging mode in the config.yml will not only unlock developer testing but it will allow the stack-trace print so if an error can be replicated, the user submitting the bug can enable it and grab the error code for the developer. Basically, instead of sending a red message saying the item was incorrectly configured you can get the RAW error code, this is useful if it actually seems to be a bug with ItemJoin and the item was actually configured correctly.
  • Support for several new internal ItemJoin specific placeholders.
    • %player_kills% - Displays the player's current player vs player kill count.
    • %mob_kills% - Displays the player's current mob kill count.
    • %player_deaths% - Displays the player's current death count.
    • %player_location% - Displays the player's current location (x, y, z).
    • %player_health% - Displays the player's current health.
    • %player_food% - Displays the player's current food level.
  • Support for disabling console logging of commands executed by ItemJoin items.
    • Added Log-Commands to the config.yml, setting this to false will disable logging of any commands executed by ItemJoin.
    • Setting Log-Commands to true from false will require a full server restart due to a server restriction.

If you have an old config file and you want to use this feature please add the following line to your config.yml;
Code (Text):
Log-Commands: true

  • NewNBT-System to the config.yml for the new NBTtag options for ItemJoin items.
    • This is optional to enable in the items.yml, it will be on by default unless it is not defined in your config.yml.
    • If you change this NBT setting it is suggested to set Clear-On-Join to true so you can erase all old ItemJoin items, as the old items will not have the new NBTtags applied, only newly given items.

If you have an old config file and you want to use this feature please add the following line to your config.yml;
Code (Text):
NewNBT-System: true

  • New items-RestrictCount to the items.yml.
    • Setting this to false will prevent players from being given more of an item if it is not the same count as in the items.yml, saying you ate 3 out of the 4 bread you would not receive any more bread until you ate all of it. Setting this to true will give the player more of the item if the stack/count size is not the same as the items.yml.
    • To sum this up, setting this to true will allow the player to have their items refreshed (topped up) if they have used some of the stack of the item they were given.
If you are using an old items.yml and want to use this feature add the following;
Code (Text):
items-RestrictCount : false
  • New region-remove trigger.
    • This will remove the item upon entering a region listed under enabled-regions on the item then give the item back upon exiting the region.
Usage;
Code (Text):
    triggers: region-remove
    enabled-regions: region1, region2


Example Item;
Code (Text):
  sword-item:
    id: DIAMOND_SWORD
    slot: 0
    triggers: join, respawn, region-remove
    enabled-worlds: world, world_nether, world_the_end
    enabled-regions: region1, region2

  • Support for BetterNick
    • If you nickname yourself using BetterNick items will no longer break and will continue to work as normal.
    • If you wish to enable ItemJoin to hook into BetterNick and are using an old config.yml you will need to add the follow line to the config.yml and set it to true!
Code (Text):
BetterNick: true

  • New command /ItemJoin save <Random-Name>
    • If you hold an item in your hand and type this command it will save it to the items.yml so you can view it and edit any default values that were created!
    • This makes it easier to add any custom items to the items.yml, default values will be created to demonstrate how to set up the item though, such as enabled-worlds will be set to the world you created the item in, and the death-drops itemflag will be applied etc. You can remove these values if you choose to.
If you use an old en-lang.yml you will need to add the following for the /itemjoin save command to have save messages appear.
Code (Text):
playerSavedItem: '&aThe item &b%item% &ahas been saved to the items.yml. Change any default values created with this item and reload the config(s).'
playerFailedSavedItem: '&cThe item &b%item% &ccould not be saved, you are not &bholding &can item!'
playerInvalidSavedItem: '&cIncorrect usage! Syntax: /itemjoin save <custom-name>!'

  • Support for item usage cooldown's.
    • Added use-cooldown to the items in the items.yml.
    • You can now set a cooldown in seconds that you have to wait to use the item, this works for any item that is usable, meaning it will not apply cooldowns to items such as blocks.
    • Simply add use-cooldown to your item and then the amount of time in seconds.
If you are using an old en-lang.yml you will need to add the following to make the cooldown message appear, only if you want a cooldown message.
Code (Text):
itemUsageCooldown: '&cUsing the item &a[%item%&a] &cis on cooldown for &a%timeleft% &cseconds..'

Usage;
Code (Text):
    use-cooldown: 3
Example Item;
Code (Text):
  cooldown-item:
    id: FIREWORK
    slot: 1
    count: 32
    name: '&dSparkles'
    firework:
      type: CREEPER
      flicker: true
      trail: true
      power: 1
      colors: GRAY, WHITE, PURPLE, SILVER, GREEN
    use-cooldown: 3
    enabled-worlds: world

  • New ability to limit the giving of items to a player's IP address
    • ItemJoin will now check the IP of a player before giving the item. So if someone has already joined and then joins with an alt the alt will not get the item.
    • Added ip-limit itemflag, you can add this itemflag to each item you want to limit to the players IP address.
    • Added a new YAML file; ip-limit.yml, this will only generate if you put the ip-limit itemflag on an item.
    • IP limiting works almost the same way as the first-join feature. However, IP limiting will still allow the player to get the item every time. It just prevents the player from creating multiple accounts to duplicate items.
    • All you have to do to get this feature to work is simply add the ip-limit itemflag to any item you want to limit to a players IP address, then reload the configuration file(s).

Fixed:
  • The permission itemjoin.all not working.
  • Items with hide-attributes in Minecraft v1.8 and below being unrecognized as ItemJoin items. (Bug was with Mojang, Created small workaround).
  • Minecraft v1.8 dropping duplication bug in creative mode. (Bug was with Mojang, Created small workaround).
  • Minecraft v1.8 Creative Mode bugs, Duplication's, and Drop issues. These bugs were with Mojang, so I created several small workarounds.
  • RegionEnter bugs, ItemJoin will no longer clear all item when exiting regions. It was only supposed to give and clear the item that was given upon entering and exiting the regions.
  • The RenderMaps (Custom Map Items), if a map throws a null error it will now prevent the server from crashing and it will just send an incorrectly configured map message.
  • Code optimizations reducing lag.
  • Updated debugging mode.
  • Issues with TokenEnchant breaking ItemJoin items even if TokenEnchant was not enabled in ItemJoin's config.yml.
    • If CustomEnchantDisplay was set to true in the TokenEnchants config.yml it would break all items on the server, including items ItemJoin did not create.
  • Count issue, would not recognize ItemJoin items that are stacked as actual ItemJoin items, only happened upon being given items.
    • Example; You receive 8 bread on join, you eat 5 of them and still have 3 remaining if you rejoin the server ItemJoin would try to remove the 3 and re-add new 8 bread.
    • I have added a new option to allow or deny this fix called RestrictCount.
  • Random errors being thrown on region enter/leave.
  • TokenEnchant bugs reversed order to prioritize Bukkit enchants.
  • PlaceholderAPI bugs prevented ItemJoin items from working and prevented players receiving ItemJoin items.

Changed:
  • Converted from using player names to players UUID's.
    • This will fix ItemJoin breaking if a player logs in and nick-names themselves because ItemJoin was going off of usernames some nick-name plugins would do more than just nick-name they would completely overwrite the player's default name breaking any ItemJoin items.
    • It was time for the UUID switch anyways haha.

[​IMG] [​IMG]

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jan 8, 2018

Added:
  • Delay identifier to commands. (delay: 100). (in ticks 20 ticks = 1 second).
  • Op identifier, you can now execute commands as OP. (op: say command).
  • Itemflag item-store. Prevents the storage of the item in a trapped chest, chest, ender chest, hopper, anvil, crafting table, shulker box, furnace, item frame, and minecart with chest.
  • Itemflag charge-color to the items.yml. You can now specify a Firework Charge Color. [charge-color: BLUE].
  • Support for TokenEnchant, you will need to add TokenEnchant: true to the config.yml if you use TokenEnchant. The config.yml will not be reset to do this for you. The enchant list now supports TokenEnchant as well as regular enchants at the same time, the format for TokenEnchants would be the same as adding regular enchants. [TokenEnchantName: Power].
  • The permission ItemJoin.All, this is the exact same as ItemJoin.*

Fixed:
  • Disposable Items.
  • The last of the disposable item stack will now be removed instead of nothing happening.
  • If a player is out of money the item will no longer disappear and not charge.
  • Null pointer/class (not found exception) was thrown by unbreakable itemflag.
  • The plugin.yml. Commands that players do not have permission for will no longer appear in the /help menu of Craftbukkit/Spigot or essentials.
  • A lot of permission issues in the plugin.yml.
  • Should notice a decreased lag optimization in this new v4.5 version.
  • Creative mode inventory issues with items randomly disappearing and not reappearing unless you open a chest or update the inventory (Invisible Items).
  • When starting up the server ItemJoin would throw an error when checking for updates, this was due to a change in Bukkit from http to https and has been fixed!

Changed:
  • Java class structure fixes and optimizations.
  • Item frames to placement and count-lock itemflags. Now if you try to place an item in an item frame, placement will block it while count-lock will keep your count and allow placement in frames.

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Sep 19, 2017

Fixed:
  • All issues with PlaceholderAPI support.
Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Aug 4, 2017

There are some config changes so please read the changes!
Once again, I will not be resetting the config files so you will have to add them if you need them.

Added:

  • Support for Minecraft 1.12.1!
  • ClearItems null checker.
  • InvClickCreative null checker.
  • Support for MyWorld.
  • Support for xInventories.
  • Support for the new 1.12 EntityPickupItemEvent.
  • Specific event checkers, if it doesn't have the event in a certain version it wont throw errors anymore, such as PlayerSwapHandItemsEvent and EntityPickupItemEvent
  • Multi-Click-Air to the items.yml commands.
  • Right-Click-Air to the items.yml commands.
  • Left-Click-Air to the items.yml commands.
  • Global commands to the config.yml. These will be executed upon joining the server. You will need to add what is listed below to your config.yml to use the global commands or fully reset your config.yml.
Code (Text):
#// Global Commands for ItemJoin on join, these commands are executed by console. //#
enabled-global-commands: false
enabled-worlds: world, world_nether
global-commands:
  - 'itemjoin get <item> <player>'
[​IMG]

Fixed:
  • Creative mode (hasItem) bug fixes.
  • Clear on error codes.
  • Trap bug error codes with disposable items.
  • Other minor bug fixes.


Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Aug 3, 2017

There are some config changes so please read the changes!
I will not be resetting the config files so you will have to add them if you need them.

Added:

  • Held item slot to the config.yml (This will NOT reset the config.yml) If you want to use this feature then add HeldItem-Slot: # to your config.yml. See the example image below.
[​IMG]
  • InvClickCreative.
  • InvClickSurvival.
  • /itemjoin getall command, get all of the ItemJoin items.
  • /itemjoin removeall command, remove all of the ItemJoin items.
  • /itemjoin help 4, fourth page of the ItemJoin help list command.
  • Added custom messages for the new getall and removeall commands to the en-lang.yml.
If you want messages when you use the new commands add these to your en-lang.yml;
Code (Text):
givenAllToYou: '&aYou were given all ItemJoin items.'
givenAllToPlayer: '&aYou gave %argsplayer% all ItemJoin items.'
playerTriedGiveAllItems: '&4%argsplayer% &ctried to give you all ItemJoin items but they already exists in your inventory!'
allItemsExistInInventory: '&cYou already have all ItemJoin items!'
allItemsExistInOthersInventory: '&4%argsplayer% &calready has all the ItemJoin items!'

removedAllFromYou: '&aAll ItemJoin items were removed from your inventory.'
removedAllFromPlayer: '&aYou removed all ItemJoin items from %argsplayer%.'
playerTriedRemoveAll: '&4%argsplayer% &ctried to remove all ItemJoin items but you do not have any in your inventory!'
allItemsDoNotExistInInventory: '&cItemJoin items do not exist in your inventory!'
allItemsDoNotExistInOthersInventory: '&cItemJoin items do not exist in %argsplayer% inventory!'
Fixed:
  • Errors if Vault is enabled and you have no economy plugin.
  • Random Vault error if commands-cost is set to zero.
  • Vault error if economy plugin doesn't return cost.
  • count-lock bugs.
  • Various creative mode bugs.
  • Blank messages being sent with prefix if the en-lang.yml had a blank / removed message.
  • Major bug if the world you were in and the world defined in the config had a few similar string characters it would save that item and say you are in the world bugging out all items.
  • Bug with %argsplayer% not outputting correct for playerTriedRemove in the en-lang.yml
  • Other minor bug fixes.

Changed:
  • Firework colors to list form rather than array, ex: colors: gray, white, purple, silver, green. (This will NOT reset the items.yml, you will have to manually change this in your items.yml if you use firework items!)
Code (Text):
    firework:
      type: CREEPER
      flicker: true
      trail: true
      power: 1
      colors: GRAY, WHITE, PURPLE, SILVER, GREEN
  • Re-coded creative inventory click events. (If you find bugs with creative inventory mode click events please let me know!)

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jul 14, 2017

Fixed:
  • Skull fixes for Minecraft 1.7 and 1.8.
  • Minor region fixes.

Changed:
  • potioneffects identifier to potion-effect for potions, apples, and arrow items.
  • arrow-items identifier to just poction-effect: effect: power: time.

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jul 2, 2017

Note: items.yml, config.yml and en-lang.yml are now on version 6! Upon downloading this version these configuration files will be saved & regenerated!

Added:

  • Support for CraftBukkit & Spigot 1.12.
  • Support for AuthMe's new v3 API
  • New ways of formatting code.
  • enabled-worlds identifier, you can now list the enabled worlds per-item. If enabled-worlds is doesn't exist for the item then the items will be given in all worlds.
[​IMG]
  • You can now set each individual item to be given either every time or every first join.
  • Multiple slot selections for each item making it so you don't have to create so many of each exact item. Slots can now be separated by commas; slot: 1, 2, 3, 4. This also includes support for multiple Arbitrary slots.
[​IMG]
  • Log-Coloration option to remove color codes outputted by ItemJoin to console.
[​IMG]
  • items-Overwrite option to prevent overwriting players inventory, set to true to just force set ItemJoin items.
[​IMG]
  • The failed number of items are given in text to the player, unless items-overwrite is set to false. If you wish for the message to not be sent but prevent items from being overwritten you can remove the message from the lang.yml.
[​IMG]
[​IMG]
  • New "triggers" these give items on the specified triggers which are, join, respawn, world-change and region-enter. If triggers are not defined, the join trigger will be the only one that works and items will only be given on join.
[​IMG]
  • Custom potion-effects to all types of potion bottles. Formatting goes as such Effect:LevelOfEffect:DurationInSeconds as you can see below I did Jump level 2 with 120 seconds of time applied to you upon drinking it.
[​IMG]
  • Custom potion-effects to on consume of golden apples. This works for both notch apples and regular golden apples. The formatting is the same as the potion items. That being Effect:LevelOfEffect:DurationInSeconds.
[​IMG]
  • Message and switching server commands via items now have cooldowns if specified.
  • items-Spamming to the items.yml setting this from false to true will allow players to rapidly click their items and execute commands.
[​IMG]
  • Inventory Click Commands. You can now click an item in your inventory to execute a command.
[​IMG]
  • Items being able to execute multiple commands, define separate left and right clicks. Left clicks, right clicks, multi clicks being both left and right clicks, and physical for interacting with pressure plates and such.
[​IMG]
  • commands-type. There is now interact that being left, right click and physical type of events and then inventory, that being clicking the item in the inventory.
[​IMG]
  • commands-sound. Play a sound when the player right clicks or left clicks an item in their hand.
[​IMG]
  • Debugging mode in the config.yml mostly for developer use.
[​IMG]
  • Items-Permissions, you can now disable the permissions of giving items, just by setting it to false in the config.yml.
[​IMG]
  • Clear-Items: in the config.yml, All will clear any item in the players inventory, ItemJoin will clear only ItemJoin items.
[​IMG]
  • Support for WorldGuard Regions!! Added WorldGuard to the config.yml set to true to use regions.
  • enabled-regions to the items.yml, you will add this to each item you want in certain regions, just like enabled-worlds.
[​IMG]
  • Generations to custom books, this is more for creating a proper item but it can be changed by the user, its usually left undefined and I have the plugin auto set it to Generation.ORIGINAL
  • New language method allowing easier additions of other languages.
  • You can now simply remove anything from the lang.yml to no longer send the message.
  • Support for ChestCommandsGUI, MyCommands, Buycraft and other similar plugins now work for their commands. I have changed the commands to dispatch as player chat rather than a player command and that ended up doing the trick.
  • LICENSE_GPL3.txt to prevent ItemJoin from being stolen.
  • LICENSE_MIT.txt to prevent ItemJoin from being stolen.
  • Better support for previous Minecraft versions, 1.7, 1.8, 1.9, 1.11, 1.12.

[​IMG]

Fixed:
  • Issue where if the count was not the same as the config it would not update (fix) the item.
  • Bug allowing players to move items to and from their hot bar using their cursor & num 1-10 on their keyboard.
  • Creative mode duplicating items, however your inventory will now be forced closed when in creative mode if you click a non-movable item.
  • Name formatting issue with having no format codes specified. This would cause the name to auto-underline itself.
  • Skulls now properly render and the skin will appear for the player.
  • Custom Books can now have commas in them, they will no longer be removed and there will be no random commas anymore.
  • Some map rendering and fixed custom maps lag!
  • Items will continue to be ItemJoin items even if durability to those items are taken unless defined otherwise.


Changed:
  • FirstJoin mode, players uuid's will now be saved.
  • Input for saving players items in the first-join.yml.
  • Completely recoded custom books.
  • clear on join and clear on world changed. This can now be located in the config.yml.
  • Clear itemflags with generalized options. Put in config.yml you can either use All for all items in inventory or ItemJoin for all ItemJoin items in inventory, no more specifics.
  • Custom Maps now only render ONCE reducing A LOT OF lag!
  • How Inventory Updating is handled. May prevent more ghost images of items than before.
  • containsIgnoreCase() method with toUpperCase and toLowerCase to make string methods easier, such as enchants names, itemflags, worlds, etc.
  • Enchantments are no longer case sensitive.
  • Item ID's (Bukkit Names) are no longer case sensitive, this has nothing to do with item id # (Numbers).
  • Worlds are no longer case sensitive.
  • itemflags are no longer case sensitive.
  • Slot Id is now saved in the items name, now allowing you to create multiple of each item with different slots.
  • Defining all under enabled-worlds is now the new global tag. You would now set up the enabled-worlds as such to get the item in all worlds without defining each individual world name. These are four examples of using the global option.
[​IMG]

Removed:
  • clear-on-worldchanged itemflag.
  • clear-on-join itemflag.

I appreciate your guys patience and I hope you enjoy all the new features and changes made to ItemJoin. All these new changes have made ItemJoin smoother, and allow me to add future expansion to this plugin. The amount of decreased lag the plugin is at now is amazing.

As of now, updates will go back to regularly coming out every half month to a month (Unless a breaking bug is found I will upload sooner).

I have added a Jenkins server for snapshots to test and a discord server if anyone is seeking immediate help. I will be updating the documentation pages and ItemJoin's front page over the next few days will all the new information.
Jenkins server; http://jenkins.craftationgaming.com:8080
Discord server; https://discord.gg/BK8ENJh

Please see the documentation page if you need any help with these new updates!
If you have any ideas or requests that you would like to see in ItemJoin's future please submit a feature request.
----------, Jun 30, 2017

Fixed:
  • Couple random first join issues making it fully functional.
  • The FirstJoin.yml being generated even though first join isn't used.. (will no longer generate file if you don't use first join so you can delete the .yml file now)
  • First first join issues with custom slots. (Mainly leggings & Arbitrary slots)
  • Duplication issues with creative mode (Sadly it was spigot sided) re-coded a little bit of hacky way until I can find a real solution, probably involving client packets.
  • Few other various bug fixes.
I probably sound like a broken record but this SHOULD defiantly be the last bug fix update before I release v4.0. The re-code is coming along nicely and is about 60% finished, just need to code a couple event handlers and do a lot of bug testing. Thank you for your guys patients, v4.0 will be defiantly worth it.


Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Apr 4, 2017

Fixed:
  • Issues with servers crashing, (erroring out).
  • Lag crashing servers.
  • Major lag reduction, new method of getting config values, old method would cause the configs to reload each time a value was needed (This would also cause infinite loops crashing the server but very rarely).
  • Bug where you could not remove economy cost messages from the en-lang.yml resulting in a huge error.
  • Global-Items settings, if you use global items these should now work properly.
  • Possible issue with rare errors occuring when %hitplayer% was triggered. I have sense re-coded it to where if you are not using the %hitplayer% variable it will no longer occur, resulting in less lag!
  • Re-uploaded to fix a check for updates error! Sorry!
Thanks for your guys patience for this update, I am hoping this will be the final release before v4.0, that is if I have finally worked out all of the bugs in v3.9.2.


Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Mar 10, 2017

Fixed:

  • A Minecraft v1.8.8 bug that was conflicting with v1.7.
  • Few other minor bug fixes.
Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Feb 3, 2017

Added:
  • Support for AuthMe Note: You will need to delete your v5 config.yml and set AuthMe to true if you use AuthMe!
  • Updated to CraftBukkit/Spigot 1.11.2
  • Major support for Minecraft v1.7. Working flawlessly on v1.7 but with a few features disabled, more will come in ItemJoin v4.0. (Surprised nobody told me sooner about the v1.7 bugs, these date back to ItemJoin v2.0 Wtf?!).
Fixed:

  • CPU usage is significantly reduced, meaning... less lag!
  • Crashing server on items running certain commands.
  • Bug that would allow you to move items using your hot bar.
  • Creative mode allowing moving and accidentally duplicating the item that shouldn't be moved. (Client side issue - fixed by just closing the players inventory if they are creative and click an item that shouldn't be moved.)
  • Creative Mode bug; they could double click an item that's not suppose to be moved and creating a second one. (Duplication Glitch)
  • count-lock issue where items would not be added back to the players inventory. Just had to add a short delay.
  • count-lock issue with fireworks, you can now have infinite fireworks.
  • Bug with clear ItemJoin items on versions before Minecraft 1.9 (Offhand slot issue).
  • Rest of a few minor bug fixes.

Thank you guys for being patient, this v3.9 update had a lot of bugs I needed to work out, as well as I am 1/3rd of the way through programming the v4.0 that will revolutionize how ItemJoin works and reduce ItemJoin's lag close to zero!

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Jan 31, 2017

Fixed:

  • 1.8.8 support for the new clear ItemJoin only options, was causing a small error.
  • Re-Wrote the new clear ItemJoin only options to reduce lag.
  • Optimized some of ItemJoins previous code to reduce the amount of lag produced, should me minimal now.
  • Few other small bug fixes.

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Oct 13, 2016

Sorry guys! Had to do another config wipe so backup your config files, this will add support for the new features!

Added:

  • Now supports PerWorldInventory
  • Now supports PerWorldPlugins
  • Added disposable itemflag, this will now remove x1 of the item from your inventory if you run a command bound to the item.
  • Added clear-on-join itemflag, clears the item from your inventory upon joining the server, before ItemJoin gives the items.
  • Added clear-on-world-change itemflag, removes the item from the players inventory upon leaving the world.
  • Added clear-only-itemjoin-on-join to the global settings, clears ALL itemjoin only items from your inventory upon joining the server, before ItemJoin gives the items.
  • Added clear-only-itemjoin-on-world-change to the global settings, removes ALL itemjoin only items from the players inventory upon leaving the world.
  • Added the durability option to items, this is the amount of damage the item is given, say the items durability is 32, and you set the durability as 5, it will now have 27 durability when given.
  • Added hide-durability itemflag, this will remove the durability bar from the item when given.
  • Added /ItemJoin remove <item> command, remove the itemJoin item from your inventory.
  • Added /ItemJoin remove <item> <player> command, remove the itemJoin item from the players inventory.
  • Added map-id option, a random id will no longer be assigned and you must assign one to a custom map.

Fixed:

  • %hitplayer% variable for commands has been completely re-written and now will display the correct player name upon left/right clicking them.

Changed:

  • How ItemJoin handles events, this fixes the errors thrown by PerWorldInventories and PerWorldPlugins.
  • The config files have been re-written to be much cleaner and include less text on the actual values themselves. A simple block of help text has been added in a space that is apart from that.

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Sep 21, 2016

ItemJoin is backwards compatible and will work on lesser versions of Minecraft. Currently tested and working on 1.6 - 1.10.2

Added:

  • /ItemJoin AutoUpdate to the ItemJoin /ij help list.
  • Custom-Map-Items are back and working flawlessly!
  • New Combat Update checker, this will make ItemJoin enable combat update by default in the future if you are above Minecraft version 1.9.

Fixed:

  • If you are on a version of Minecraft without the combat update, TIPPED_ARROWS will be disabled on ItemJoin. (No more annoying console errors on 1.8.8)
  • Check for updates bug causing a huge error code on startup, thank god that's gone!
  • Skull item placement and count-lock itemflags.
  • Better skull checking system, should now identify if it is an ItemJoin skull correctly.
  • ItemJoin-Specific-Items option now works, apparently it was never working and I had missed it. This is now enabled by default and will cause your players items to stop working. A simple clear inventory will fix this issue, or you can just set ItemJoin-Specific-Items in the items.yml to false to continue uninterrupted.

Changed:

  • The AutoUpdater now checks and downloads from ItemJoin's bukkit site, to comply with bukkit's TOS.

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request
----------, Aug 7, 2016

Backup your config files and prepare for the newly generated ones, as the new features need the new config files otherwise ItemJoin will break!

Added:

  • Commands-cost has been added, you can now add this identifier to your item and charge for use of the commands!
  • Support for global items, you can now list your worlds under world lists and define items under a global world for every world-list world to get the items. See the wiki help section for help on the global items here.
  • Optional Vault Dependency added.
  • %hitplayer% variable added to item commands.
  • /ItemJoin AutoUpdate (Now auto updates the ItemJoin plugin to the latest version when this command is ran, will require a server restart!)
  • Custom Arrows! You can now get/create Tipped Arrows. Example in the wiki.


Fixed:

  • Check for Updates no longer throws an error on startup, completely changed the check for updates system to Spigot API.
  • SwapHands register for lesser versions. v1.8.8 no longer displays console errors.
  • Crash on Join issues fixed, It was a very rare occurrence though.


Changed:

  • Check for updates system completely re-written! So much better & cleaner.

Removed:

  • I have temporarily removed the Custom Maps item to wait for a quick fix on the constant error codes. This should return soon!

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Aug 5, 2016

ItemJoin is backwards compatible and supports lesser versions of CraftBukkit / Spigot. It has been tested and working on versions 1.7 - 1.10.2

Added:

  • Support for CraftBukkit / Spigot 1.10.2!
  • SwapHands Listener. Much easier for handling Minecraft 1.9 and above.


Fixed:

  • Inventory Modify itemflag not working in Minecraft 1.8.8.
  • Error if getting an item that is Arbitrary from console using /itemjoin get.
  • Maps error is now finally gone!!
  • Weird version bug if offhand was not set. Much cleaner now and states actual MC Version.


Changed:

  • Now if the message: command instance is left blank it will send a blank message rather than having to add an extra space to make the command execute.
  • If console, player, server, or message command instance is left blank it will no longer display an error code, it will send a blank command.

Please see the Documentations page if you need any help with these new updates! Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request.
----------, Jul 1, 2016

Items.yml and config.yml are now v3! You items.yml, config.yml enlang.yml will now be copied and reset!
Please re-set up your items using the new v3 items.yml, config.yml, enlang.yml

Added:

  • FULLY Updated to Spigot/Bukkit 1.10!
  • Support to unbreakable for ALL ITEMS.
  • unbreakable itemflag
  • first-join itemflag.


Fixed:

  • Huge bugs with world changed issues
  • placement itemflag. This now only works for "block" items. Was causing glitches if put on non-block items such as pickaxes would cause you not to be able to open chests and such.
  • Firework attributes can now be hidden!
  • Cleaned up a few listeners
  • Better combatUpdate checker. (Supporting future versions)
  • Easier switching between 1.6-1.8 and 1.9-1.10


Changed:

  • All modifiers now have a new name: Itemflags
  • Give-On-Modifiers & Prevent-Modifiers are now called Itemflags
  • attributes are now hide-attributes.
  • all damage is now handled by unbreakable itemflag.
  • item-damage-living & item-damage-blocks are now an itemflag called unbreakable.
  • Items can now be SET to unbreakable rather than listening and repairing them after they are damaged
  • hide-attributes now hides ALL attributes. Including firework attributes.
  • Combined mainhand/offhand/inventoryclick listeners.
  • Unbreakable tags can now be hidden with hide-attributes.
  • CacheItems is now its own class
  • ALL CONFIGS ARE NOW v3!


Removed:

  • ItemsDamaged Listener, This is now the Unbreakable itemflag.
  • Removed the first-join boolean. First-Join-Item: True/false is now just an itemflag, first-join


Please see the Documentations page if you need any help with these new updates! Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Jun 16, 2016

Added:

  • Updated to Spigot/Bukkit 1.10!
  • Updated PlaceholderAPI optional dependency.

Fixed:

  • World Change support, Null Pointer causing ItemJoin not to give items!
  • Few small configuration issues.
  • Cleaned up the plugin.yml a bit.

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Jun 9, 2016

Added:

  • You can now hide item attributes such as +5 damage with prevent-modifiers! Just add the tag attributes.
  • Custom fireworks item!!! See the Documentations page.
  • Color support for leather armor.
  • Custom maps have been re-added back! This time no bugs. New style no longer utilizing url's but now uses the local plugin folder for png file.
  • Cleaner way of setting up book items and firework items. Less useless code.

Fixed:

  • Few major bug fixes.
  • Bug not getting any item from ij get <item> if it was an arbitrary slot.

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Jun 6, 2016

Added:

  • Arbitrary slot option. (Will add a item to the first available slot in the inventory. Will not overwrite items.)
  • server: servername to the commands.
  • BungeeCord support (Server switching).
  • Updated to CraftBukkit/Spigot 1.9.4.
  • Updated PlaceholderAPI option dependency.

Fixed:

  • A LOT OF HUGE BUGS. ( Especially with not getting items )
  • Fixed ItemJoin items duplicating. (If you move the slot it is assigned to it used to give you a new one. This has been fixed.)

Removed:

  • Temporarily removed Custom Maps. Still working on a fix for them.
  • /server servername will no longer work. Please use server: servername

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, May 17, 2016

Added:

  • Custom Maps added! Add any 128x128 pixel image to a map!
  • Custom Books! Finally!

Fixed:

  • Clear on World Changed again... Officially works. Derp..
  • Case sensitivity issues...
  • FirstJoin issues..
  • Delay of getting items not being applied correctly to world-changed and respawn.
  • MAJOR bug breaking items if a player logs in after another. Causing items to clear from a hashmap. This would make commands no longer work.
  • Few other minor bugs.

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Apr 16, 2016

Better support for Spigot/CraftBukkit 1.8! ItemJoin is fully backwards compatible for any versions of Minecraft 1.9 or below.

Added:

  • Clear on World Changed (Forgot to add is back in v2.7... My bad!)
  • Better support for lesser versions of Spigot/CraftBukkit. Should no longer see errors in Spigot/CraftBukkit 1.8.
  • Better PlaceholderAPI checker.
  • Slot (Int) cap out limit. If you define a slot that is not between 0 or 35 it will send you an error message instead of spam error codes. (Excluding Helmet, Chestplate, Leggings, Boots, and Offhand slots).

Fixed:

  • Null pointers if world was defined incorrectly. Now sends helper message.
  • Respawn and world-changed give on modifier not setting offhand and armor correctly.
  • Items not re-adding if count is not the same as the items.yml (Some of the item was consumed or used).
  • Error if offhand is defined and you switch to Spigot/CraftBukkit 1.8 it will try to still set offhand (does not exist). Now it wont set it at all.
  • Offhand non support for lower versions message. (Wont set item).
  • Issue in config... Pants were set in chestplate slot.. lol.
  • ItemJoin reload command a bit. Now generates new config files when none exist.

Please see the [[http://dev.bukkit.org/bukkit-plugins/itemjoin/pages/documentation/|Documentations]] page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Mar 29, 2016

Hey guys! Its finally here! I have completely re-coded ItemJoin to represent a much better vision.
Now with NO LAG and a new config setup. This making things much smoother and easier.


WARNING: Since this is ItemJoin "2.0" this will cause ALL config files to regenerate. Don't worry! We have an auto-backup system to save your old configuration files.

Added:

  • SUPPORT FOR ITEM ID'S
  • message: option to message the player instead of running a command as console or player.
  • count-lock prevent-modifier. With this modifier you will be able to place INFINITE amounts of this item.
  • cancel-events prevent-modifier. Cancel actions on that item such as if its a book it will cancel "opening it" to read it. Useful for bound commands.
  • FULL Offhand support.
  • New slot system implemented. Slots 0-36, Helmet, Chestplate, Leggings, Boots, and Offhand.
  • Customizable permissions per item (to get them). permission-node: 'itemjoin.world.first-item'
  • Delay to getting the items (Customizable) (Default is 2 seconds after joining).
  • World checker command! /itemjoin world
  • List available items command. /itemjoin list
  • Bind-Commands to Offhand items.
  • Support for previous CraftBukkit/Spigot versions. (Now disables Offhand support if you are not running the correct version of CraftBukkit/Spigot.)
  • ItemJoin-ONLY items are now optional. "The custom ItemJoin NBT Tags identifier". ItemJoin-Specific-Items: true

Fixed:

  • Skull_Item lag!
  • ItemJoin is now 100% Lag Free! FIXED ALL LAG!
  • Players not getting regular "non-firstjoin" items on first join!
  • UTF-8 encodings creating a weird error.
  • /itemjoin reload causing errors if ran by console.

Changed:

  • 100% Re-coded ItemJoin. All brand-new smooth code.
  • The items.yml now has a new setup. Instead of the slot defining the item. A random name (your choice) now defines the item!
  • Re-coded and Optimized the FirstJoinOnly system.
  • Updated the Documentations page.


Removed:

  • Pointless loops in code.. Causes lag.
  • So much code..

Please see the Documentations page if you need any help with these new updates!
Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Mar 19, 2016

Took some time to work out the bugs so this should be extremely stable until version 2.7 is finished ( a large update ).
Please make sure your CraftBukkit or Spigot 1.9 version is up to date with /version! If it is not up to date ItemJoin may not work!
Offhand support is fairly new so if you find any bugs please report them!


Added:

  • Added Offhand item support. Definable as slot 104:. Reference: ( 1 - 36 is main inventory. ) ( 100 - 103 are armor slots. ) ( 104 is the offhand slot. )

Fixed:

  • Possibly fixed all skull item lag.
  • Players bypassing inventory-modify prevention using the "F" key. ( Moving the item to the offhand slot ).
  • Skull item RIGHT_CLICK_BLOCK action not working.
  • Fixed the CraftItemStack dependency. ItemJoin should now work with ALL future versions of CraftBukkit/Spigot and should not break.
  • Fixed EntityDamagedByEntityEvent Errors.
  • Fixed EntityShootBowEvent Errors.

Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Mar 14, 2016

Quick Update to CraftBukkit/Spigot 1.9! Removing Craft Item Dependencies in ItemJoin v2.6!
This update was rushed so if you guys find any bugs PLEASE REPORT THEM!


Added:

  • Language.yml, edit messages!
  • Support for CraftBukkit/Spigot 1.9!

Fixed:

  • Another attempt at fixing Skull_Items lag. Its not complete but better.

Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Mar 4, 2016

Added:

  • ItemJoin world checker to listeners! Whoops! Causes even less lag & looping now! Yay!
  • item-damage-blocks to Prevent-Modifiers. (Prevents the player from damaging that item when breaking blocks.)
  • item-damage-living to Prevent-Modifiers. (Prevents the player from damaging that item when hitting or being hit by a player or mob.)
  • If the enchant name does not exist (listed incorrectly) It gives a nifty little helper! (gives item without enchant).
  • Not adding an enchant level or incorrect enchant level (AUTO SETS TO LEVEL 1 ENCHANTMENT).
  • Added incorrect issue message if you are missing /ij get SLOT

Removed:

  • Other-Drops listed in the Items.yml (Has no effect) forgot to remove it before uploading ItemJoin v2.3. It was a failed test.

Changed:

  • Cleaned up and fixed commands. Especially as console (Causing errors).
  • Rewrite some of the Check for Updates code. Now supports beta/alpha/snapshots builds. Much cleaner.

Fixed:

  • Some FirstJoin bugs.
  • Few skull Item Bugs.
  • Skull items causing lag on Interact.
  • Skull items not binding commands and actions.. Whoops! lol.
  • World Case Sensitivity. No longer matters how you list your worlds. Whether it is WoRLD or world or WORLD or WoRlD.. Etc...
  • ItemJoin (FirstJoin) items not giving if items have FirstJoin defined even when the mode is set to false.
  • Fixed redefining worlds while ItemJoin is active. /ij reload now loads the new worlds that were defined in the items.yml
  • Incorrect enchantment names no longer throws error codes.
  • If an enchantment level is not specified it no longer causes a HUGE error!
  • Fixed PlayerInteractEvent (onCommands) Causing errors when interacting in an undefined world.
  • Clear-on-join fixed AGAIN! Officially tested and works this time!
  • Fixed clear-on-world-changed.
  • Fixed armor permissions (Forgot to add them).

Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Feb 12, 2016

ITEMJOIN 2.3 WILL BREAK ANY LOWER VERSIONS. IT IS RECOMMENDED TO BACKUP YOUR CONFIG AND ITEMS.YML AND REFILL THEM OUT ACCORDINGLY TO THE NEW ONES.

Something I try to make a big deal of is that my plugins have no required dependencies. (Does not require / rely on other plugins.) I want it to be its own independent plugin. Yet there are still options to allow it to hook into other plugins. Which gives you guys more freedom. I hope you guys enjoy this LONG... awaited update. Please forgive me for taking so long and for it being late..

- Declaration Change (Refactor) - From XSilverSlayerX to my new name RockinChaos.

Added:

  • More placeholders!
  • ItemJoin items are now Unique and cannot be crafted or re-named to!
  • Lots of new options in items.yml. (May want to reset it or see the Documentations page).
  • prevent-modifiers PER ITEM! ( See Documentations Page ).
  • give-on-modifiers PER ITEM! ( See Documentations Page ).
  • Per-World support to FirstJoin mode.
  • FirstJoin now supports PER ITEM! So define what item you want to use first join on.
  • FirstJoin on world changed now.
  • FirstJoin mode Enabled/Disabled option to physically allow the options to work.
  • /itemjoin permissions ( Permissions Checker Command ).
  • /ij get <slot> ( Get an item from config ).
  • /ij get <slot> <player> ( Get an item from config for specified player ).
  • CreativeBypass per item option. (Bypass prevent/give-on modifiers with this).
  • AllowOpBypass per item option. (Bypass prevent/give-on modifiers with this).
  • Customization actions for commands to execute! See the Documentations page for more information on this.
  • Permission: itemjoin.permissions ( For Permissions Checker Command ) (Default = true).
  • Permission: itemjoin.get ( For Item Get Command ) (Default = op).
  • Permission: itemjoin.get.others ( For Item Get For Others Command ) (Default = op).
  • Support for player: (command). ( Executes command as instance of player, See Documentations Page ).
  • Support for console: (command). ( Executes command as instance of console, See Documentations Page ).
  • Added support for player: or console: not existing. Runs as player instead..
  • Added commands-action: RIGHT_CLICK_AIR, RIGHT_CLICK_BLOCK, LEFT_CLICK_AIR, LEFT_CLICK_BLOCK, PHYSICAL option in items.yml.
  • If commands-action: is not specified then all interactions except PHYSICAL will be enabled by default for that item.
  • Fixed PlaceholderAPI Hooking. (HUGE) error if PlaceholderAPI does not exist and PlaceholderAPI is set to true. - How did nobody notice this... lol.
  • Updated to current version of PlaceholderAPI (1.9.0.1).
  • Updated to CraftBukkit 1.8.9 (Meh).

Removed:

  • Multiverse-Core is SUPER NOT required anymore. No more large hooks.
  • Removed the Multiverse listener (MvListener) ENTIRELY! Now using default listeners. (NO MORE REQUIRED DEPENDENCIES).
  • No longer matters what Multiverse-Core Version you use.

Changed:

  • Rewrite the commands less lag.
  • cleaned up A LOT of code.
  • Cleaned up the config.yml (may want to reset it or see Documentations page).
  • Rewrite the FirstJoin only mode.
  • drops are now called self-drops.
  • deathdrops are now called death-drops.
  • ItemJoin worlds are no longer case sensitive!
  • Complete reset up of /itemjoin help.
  • Multiverse is now EXTREMELY optional. Just preferable.

Fixed:

  • Skull_Item bugs.
  • Re-write 80% of ItemJoin's Code.
  • Clear on Join (Now works... Derp..)
  • Prevent-Placement no longer causes extreme server lag.
  • Prevent-Modify is a lot cleaner and smooth transitions.
  • Prevent-Drop after spam clicking the drop button or clicking out of inventory no longer causes lag.
  • Issues with launch pads & commands (Physical Actions). No longer runs commands bound to an item if said item is in hand.
  • Fixed Skull Caching Issues. ItemJoin now stores player data individually instead of on each interaction (causing lag).
  • ItemJoin should now run smoother. Less config looping.

Have any ideas or requests that you would like to see in ItemJoin's future? Please submit a feature request!
----------, Feb 6, 2016

Bug Fixes!:

  • Permissions are fixed! Yay!
  • ItemJoin.use now works
  • ItemJoin.updates now works
  • ItemJoin.reload now works
  • ItemJoin.WorldName.* now works
  • ItemJoin.WorldName.# now works
  • ItemJoin.* now works
Sorry guys for the lack in updates. I have been posting them on the bukkit.org site and I haven't had time to get onto the spigot site. More updates coming soon!
----------, Nov 13, 2015

Its the big 2.0!
Big thanks to everyone who has downloaded my plugin. Its been fun and there is a lot more to come!

Added:
  • Added option in config.yml "First-Join-Only" (default = false). Reset the config.yml file to see the new option.
  • Added option in config.yml "give-on-respawn" (default = false). Reset the config.yml file to see the new option. "New Respawn Event".
  • Added option in items.yml "data-value:" (default = 0). Reset the items.yml file to see the new option.
  • Re-wrote the commands so they display errors correctly and actually respond to you.
  • Few bug fixes.
  • Cleaned up more code V_V.
What is data-value? This is the new solution to item id's. You can now use Bukkit material name and the ending id "data value" to get the right item.
So in the items.yml you can have id: GOLDEN_APPLE and then data-value: 1 and receive a GOD golden apple. Or you could have id: STAINED_GLASS and data-value: 12 and receive BROWN stained glass. These are just a few of MANY examples.
----------, Sep 27, 2015

Resource Information
Author:
----------
Total Downloads: 123,049
First Release: Sep 27, 2015
Last Update: Nov 24, 2024
Category: ---------------
All-Time Rating:
268 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings