Mega Soulbound Revamp

Discussion in 'Suggestions' started by Reddoons, Feb 10, 2020.


To Server Owners: Will this fit your needs?

  1. Yes

  2. With some modifications (comment down below)

    0 vote(s)
  3. No

    0 vote(s)
  1. Reddoons

    Reddoons New Member
    Premium Supporter Supporter

    Oct 7, 2019
    Likes Received:
    Dear MMOItems team,

    I saw that you have the "Mega Souldbound Revamp" task in Trello and since the current system fails to work with our concept I went ahead and designed a soulbound system that allows a whole lot of customizabilty so it will not only benifit my project but all the other servers too. This might not be what you understand as "soulbound", its actually how the plugin handles item progress. That means I will talk about what shall happen with the players items when he dies or finds an item. If you refer to that with a different term just rename the thread. The current "souldbounding" system is not affected by this concept.

    I might refer to server owners as “creators”.

    With that said here is my design:

    This design has two core parts. The item selectors and the actions. The item selectors select which items are selected when a player dies (Example: Only consumables). After the items have been selected the defined action is executed (Example: Drop the items).

    The selectors and actions can be combined to individual setups. It is possible to set different setups per world / worldguard region. More on that later.

    These should be the default item selectors:

    - none This will just disable the special drops in a region / world where this item selector is set.

    - all Selects all items in the inventory. The same as the vanilla mechanism.

    - only-these-types{CONSUMABLES,SWORDS} This will only select the items of the given item types.

    - unsaved{leave-region} This is a special one. Let me introduce you to the magic lootbag! This great lootbag stores each item that you pick up (default pickup events can be thePlayerPickupItemEvent and getting an item from an MMOCore loot chest). You will be able to see all the great loot in a GUI by using /lootbag but you wont be able to get anything out of there until you leave / enter a specific WorldGuard region. As soon as you leave / enter the region all of the items in the loot bag will be saved and you can take them out. If you die or logout before that the lootbag will let the configured actions decide what happens with all that sweet loot. The parameters that can be passed are:


    These set when the lootbags items shall be saved.

    "leave-region" cant be allowed when this is set as a world wide item selector.

    - drop-risk{} This is basically the Wynncraft loot system. The more you die, the more of your items will drop. This is linked to a "souls" integer that slowly increases at a given rate (just like stellium; maybe you should give creators the option to actually use stellium for that to punsih the player for teleporting and dying...). The arguments for this would be in a yaml list below the "selector:" option instead of having them in curly brackets (too confusing since these can get really long). They would look something like this:

    - "Souls: 100-90: 10%40%CONSUMABLES,1%25%ARMOR"

    - "Souls: 90-50: 50%60%CONSUMABLES,10%50%ARMOR"

    - "Souls: 50-0: 100%100%CONSUMABLES,60%50%ARMOR,10%100%SWORD"

    The "Souls: INT-INT" parameter refers to the amount of souls the player has.
    The two percenteges mean that you e.g. have a chane of 10 percent to drop 40 percent of your consumables. And the String obviously refers to the item type.

    These should be the default actions:

    dropper = the player that is dropping the items

    - destroy Just remove the item stacks from the inventory.

    - drop Just drop the items, vanilla mechanic like.

    - drop-bound-dropper{Age=X} Drop the selected items onto the ground and set the owner NBT tag. This is a very cool vanilla mechanic where only the owner can pick up the item. If the item is about to despawn (last 10 seconds of its existence) everybody can pick it up. The Age=X paramter reffers to the age nbt data. This will count upwards each tick. With a normal Spigot config the item will despawn after 6000 ticks (5 minutes). Since server creators might want to unlock the item for all players eariler then 5 minutes it should be possible the increase the age on the item when its dropped. Apparently this value can also be negative so it may be possible to make an opposite effect just by providing a negative integer. Here is the documentation:

    - drop-bound-killer{Age=X} This utilizes the same vanilla mechanic as before, just set the Owner to the player that killed the dropper. This prevents loot stealing. If the killer is not a player call the drop action.

    These options can be combined and overridden based on the current world / worldguard region. The settings for that will be in the new soulbound.yml config file. I created a config file over at pastebin. It has a whole lot of comments. If you have any questions about that please ask!

    Exceptions: Creators can set an option in each items config / in the item editor GUI that will override the item selector and the action in the current world / region. This option would be called soulbound-behavior and has all the normal actions plus one “don’t-override” option as parameters. “Don’t-override” would be the default parameter. It just does the stuff that is defined in souldbound.yml.

    This system should also be on the lookout for 3th party plugin items that should not be dropped. I guess it’s best to open a new feature request for each compability (e.g. you add a check for a certain NBT tag).
  2. Joshin

    Joshin Community Manager
    Community Manager Premium Supporter Supporter

    Apr 7, 2018
    Likes Received:
    Cool ideas.

Share This Page