Recent Changes

Feb 23, 2018
Recent Changes
  • [​IMG]



    | 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.
  • Loading...
  • Loading...