Inventory Restore+: REMASTERED

 Inventory Restore+: REMASTERED Latest-release

Inventory Restore+: REMASTERED
Inventory Restore - BEST INVENTORY MANAGEMENT PLUGIN

3d255f8a2615c1f2f3633e17ad957080.png

The source is now included in the default price, no extra payment required. If you have already purchased the plugin, PM me, and I will send you a link to the GitLab (requires an account). Please include your GitLab username in the PM. This is only for a limited amount of time.

Remastered: The plugin has been remastered, hence including new, better, and more innovative systems and features. The thread should be updated with the new photos. Below is the listed changes:

Changes:
  • Data is now stored in JSON files for performance purposes.
  • Pages system. This has been the most requested feature, and it is sad that the plugin didn't feature it. Now though, you can scroll through pages and pages of inventory history-- newest one being listed first and oldest ones found at the end pages.
  • Built-in API. Yes, if you purchase the plugin, your developers may use the jar to create add-ons using the built-in API it provides. However, this does not give you the right to -Redacted- and hand the plugin to every developer that contacts you. This is against the TOS and might end badly for you. Contact me first if you wish to use the API, and I will give you a pass. Further on this is described below.
  • Configuration. I am not a big fan of making configurable plugins, don't take it personally. However, I believe that a successful plugin like this should feature it, and I also understand why you want it so bad.
  • Redesigned GUI. The GUI has been redesigned a little bit, to something I believe looks a bit nicer.
  • Text-change. I have decided to change the colors and formatting of the text.
  • Fast-restore. Skips the process that allows a user to restore their own recovered inventory after staff action.
To-do:
✓ = completed

  • I am looking to create a language file (the lang is generated, but contains nothing). Look forward to the next update!
  • Make GUI/Panes configurable
  • Create a more fulfilling API for the newest version.
  • Cleanup code (remove redundancy, change class names, change method names).

Video:
  • For the ones who are too lazy to read the whole thread to get the main functionality. I need updated videos, PM me!


Price/Purchase:
  • Copy: 10 GBP SALE: 5 GBP (50% off)
  • Source: 25 GBP (free for the moment)

How to get the source: PM me!


Additional Info:
This is a completely new version of Inventory Restore+. Made even better ;) To support death history. Now, can't you only restore the player's most recent inventory, but also an inventory he had a month ago, too! User-friendly dates. ID system.

Commands & Permissions:
[...] = optional arguments
<...> = mandatory arguments.
Code (Text):
name: InvRestore2
authors: [ExpDev, mraureliusr, itsKateee]
version: 2.8.0-STABLE
main: me.expdev.invrestore.InvRestorePlugin
description: A remaster of InventoryRestore+ at SpigotMC by the same author.
website: https://www.spigotmc.org/resources/22027/
commands:
invrestore:
description: Check plugin details
saveinv:
description: Saves a player's current inventory.
permission: invrestore.saveinv
usage: /saveinv [player]
recoverinv:
description: Recover a player's inventory from their history.
permission: invrestore.recoverinv
usage: /recoverinv <player> [reason]
restoreinv:
description: Restores an inventory from a recovery.
usage: /restoreinv
invrestoretest:
description: Hidden command, only developer-mode for testing


Features:
  • Effective code
  • Extremely good data management
  • Permissions
  • History save
  • Much more!

[SPOILER="Config"]
Code:
# Made by the one and only loved ExpDev
# Do you miss this config file? ;)

# <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3
# First of, I just wanna say thank you for purchasing this plugin! If you have
# not paid for it, and got it from a shady place, then shame on you. I also want
# to thank all the people who have supported and bought this plugin from the
# beginning. You have been patient with your requests, and I have been busy.
# You deserve a new, and better version. :)
# <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3 <3

# Leave this off, or some testing commands will become available
# Console will also get spammy with logging messages. Ideally, a tool
# for developers :P
developerMode: false

############################################################
# +------------------------------------------------------+ #
# |                     SCHEDULERS                       | #
# +------------------------------------------------------+ #
############################################################
# - All timings are measured in seconds
schedulers:
  # Synchronize data to their respective files
  saveData: 1800
  # How long to keep a recvoverable inventory, this will also remove
  # it from a player's recovered inventory if they haven't accepted it yet
  removeRecoverableInventory: 1209600 # two weeks

############################################################
# +------------------------------------------------------+ #
# |                       RESTORE                        | #
# +------------------------------------------------------+ #
############################################################
restore:
  # Keep the inventory history even after it is restored?
  keepHistory: false
  # Save inventory history if the player died with an empty inventory
  # Honestly don't know why this is an option
  saveEmptyInv: false

############################################################
# +------------------------------------------------------+ #
# |                       CREDITS                        | #
# +------------------------------------------------------+ #
############################################################
# - Section to give credits for the creation of the plugin
credits:
  # Thank the developer when they log in on your server
  # Suggested, but disable it by leaving deleting the thankDev section below
  thankDev:
    msg: '&9ExpDev&7, the developer of &9InvRestore (https://www.spigotmc.org/resources/authors/174734/)&7, has joined!'
[/SPOILER]

players.json
As you can see, the armor and contents are an encoded base64 string instead of a serialized direct ItemStack. This will save space on your machine. You can use a base64 decoder to decode it, but don't worry, the plugin does this for you.;)
Code:
{
  "0e5ff250-4c32-45ac-a077-87f4d16382e0": {
    "id": "0e5ff250-4c32-45ac-a077-87f4d16382e0",
    "name": "ExpDev",
    "lastLoginTime": 1499106753235,
    "restores": {
      "1499106775981": {
        "timestamp": 1499106775981,
        "contents64": "rO0ABXcEAAAAJHNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFw\r\ndAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFi\r\nbGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmpl\r\nY3Q7WwAGdmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAA\r\nAAN0AAI9PXQABHR5cGV0AAZkYW1hZ2V1cQB+AAYAAAADdAAeb3JnLmJ1a2tpdC5pbnZlbnRvcnku\r\nSXRlbVN0YWNrdAAFU1RPTkVzcgAPamF2YS5sYW5nLlNob3J0aE03EzRg2lICAAFTAAV2YWx1ZXhy\r\nABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cAAFc3EAfgAAc3EAfgADdXEAfgAGAAAAA3EA\r\nfgAIcQB+AAlxAH4ACnVxAH4ABgAAAANxAH4ADHQAElNUQUlORURfR0xBU1NfUEFORXNxAH4ADgAO\r\ncHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcA==\r\n",
        "armor64": "rO0ABXcEAAAABHNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFw\r\ndAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFi\r\nbGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmpl\r\nY3Q7WwAGdmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAA\r\nAAR0AAI9PXQABHR5cGV0AAZkYW1hZ2V0AAZhbW91bnR1cQB+AAYAAAAEdAAeb3JnLmJ1a2tpdC5p\r\nbnZlbnRvcnkuSXRlbVN0YWNrdAADQUlSc3IAD2phdmEubGFuZy5TaG9ydGhNNxM0YNpSAgABUwAF\r\ndmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHD//3NyABFqYXZhLmxhbmcuSW50\r\nZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cQB+ABAAAAAAc3EAfgAAc3EAfgADdXEAfgAGAAAABHEA\r\nfgAIcQB+AAlxAH4ACnEAfgALdXEAfgAGAAAABHEAfgANcQB+AA5xAH4AEXEAfgATc3EAfgAAc3EA\r\nfgADdXEAfgAGAAAAAnEAfgAIcQB+AAl1cQB+AAYAAAACcQB+AA10ABJESUFNT05EX0NIRVNUUExB\r\nVEVzcQB+AABzcQB+AAN1cQB+AAYAAAAEcQB+AAhxAH4ACXEAfgAKcQB+AAt1cQB+AAYAAAAEcQB+\r\nAA1xAH4ADnEAfgARcQB+ABM=\r\n"
      },
      "1499106769379": {
        "timestamp": 1499106769379,
        "contents64": "rO0ABXcEAAAAJHNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFw\r\ndAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFi\r\nbGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmpl\r\nY3Q7WwAGdmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAA\r\nAAN0AAI9PXQABHR5cGV0AAZkYW1hZ2V1cQB+AAYAAAADdAAeb3JnLmJ1a2tpdC5pbnZlbnRvcnku\r\nSXRlbVN0YWNrdAAFU1RPTkVzcgAPamF2YS5sYW5nLlNob3J0aE03EzRg2lICAAFTAAV2YWx1ZXhy\r\nABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cAAFcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw\r\ncHBwcHBwcHBwcHA=\r\n",
        "armor64": "rO0ABXcEAAAABHNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFw\r\ndAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFi\r\nbGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmpl\r\nY3Q7WwAGdmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAA\r\nAAR0AAI9PXQABHR5cGV0AAZkYW1hZ2V0AAZhbW91bnR1cQB+AAYAAAAEdAAeb3JnLmJ1a2tpdC5p\r\nbnZlbnRvcnkuSXRlbVN0YWNrdAADQUlSc3IAD2phdmEubGFuZy5TaG9ydGhNNxM0YNpSAgABUwAF\r\ndmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHD//3NyABFqYXZhLmxhbmcuSW50\r\nZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cQB+ABAAAAAAc3EAfgAAc3EAfgADdXEAfgAGAAAABHEA\r\nfgAIcQB+AAlxAH4ACnEAfgALdXEAfgAGAAAABHEAfgANcQB+AA5xAH4AEXEAfgATc3EAfgAAc3EA\r\nfgADdXEAfgAGAAAAAnEAfgAIcQB+AAl1cQB+AAYAAAACcQB+AA10ABJESUFNT05EX0NIRVNUUExB\r\nVEVzcQB+AABzcQB+AAN1cQB+AAYAAAAEcQB+AAhxAH4ACXEAfgAKcQB+AAt1cQB+AAYAAAAEcQB+\r\nAA1xAH4ADnEAfgARcQB+ABM=\r\n"
      },
      "1499106765178": {
        "timestamp": 1499106765178,
        "contents64": "rO0ABXcEAAAAJHNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFw\r\ndAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFi\r\nbGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmpl\r\nY3Q7WwAGdmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAA\r\nAAN0AAI9PXQABHR5cGV0AAZkYW1hZ2V1cQB+AAYAAAADdAAeb3JnLmJ1a2tpdC5pbnZlbnRvcnku\r\nSXRlbVN0YWNrdAAFU1RPTkVzcgAPamF2YS5sYW5nLlNob3J0aE03EzRg2lICAAFTAAV2YWx1ZXhy\r\nABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cAAFcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw\r\ncHBwcHBwc3EAfgAAc3EAfgADdXEAfgAGAAAAAnEAfgAIcQB+AAl1cQB+AAYAAAACcQB+AAx0ABJE\r\nSUFNT05EX0NIRVNUUExBVEVwcHBw\r\n",
        "armor64": "rO0ABXcEAAAABHNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFw\r\ndAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFi\r\nbGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAlsABGtleXN0ABNbTGphdmEvbGFuZy9PYmpl\r\nY3Q7WwAGdmFsdWVzcQB+AAR4cHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAA\r\nAAR0AAI9PXQABHR5cGV0AAZkYW1hZ2V0AAZhbW91bnR1cQB+AAYAAAAEdAAeb3JnLmJ1a2tpdC5p\r\nbnZlbnRvcnkuSXRlbVN0YWNrdAADQUlSc3IAD2phdmEubGFuZy5TaG9ydGhNNxM0YNpSAgABUwAF\r\ndmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHD//3NyABFqYXZhLmxhbmcuSW50\r\nZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cQB+ABAAAAAAc3EAfgAAc3EAfgADdXEAfgAGAAAABHEA\r\nfgAIcQB+AAlxAH4ACnEAfgALdXEAfgAGAAAABHEAfgANcQB+AA5xAH4AEXEAfgATc3EAfgAAc3EA\r\nfgADdXEAfgAGAAAABHEAfgAIcQB+AAlxAH4ACnEAfgALdXEAfgAGAAAABHEAfgANcQB+AA5xAH4A\r\nEXEAfgATc3EAfgAAc3EAfgADdXEAfgAGAAAABHEAfgAIcQB+AAlxAH4ACnEAfgALdXEAfgAGAAAA\r\nBHEAfgANcQB+AA5xAH4AEXEAfgAT\r\n"
      }
    },
    "lastRestoreIds": []
  }
}

API:
If you have developers, you are probably excited about this. First, I just wanna say as stated earlier in this thread, you are not permitted to just give the jar to any developer or person. Consult with me first, unless you are a developer yourself and own a copy of the plugin through purchasing.

Here's an example of how to use the API:
Note that this is just a small portion of it. Once you have the player object, you can do endless of things. Also take note of the InvRestoreAPI class.
Code:
package invrestore;

import me.expdev.invrestore.RInventory;
import me.expdev.invrestore.RPlayer;
import me.expdev.invrestore.RPlayers;
import me.expdev.invrestore.Restores;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

/**
* Project created by ExpDev
*/
public class InvRestoreAPITest {

    // Empty constructor
    public InvRestoreAPITest() {}

    /**
     * Executed when program is ran
     *
     * @param args Additional arguments
     */
    public static void main(String[] args) {
        // Get a bukkit player
        Player player = Bukkit.getPlayerExact("ExpDev");

        // Now get the player's InvRestore user object
        // Note: Other additional methods such as #getById(String uuid) is also available
        RPlayer me = RPlayers.getInstance().getByPlayer(player);
      
        // Get the player's restores
        Restores restores = me.getRestores();
      
        // Print all of the restores' statuses and IDs
        for (RInventory inventory : restores.getAll()) {
            System.out.println("ID: " + inventory.getTimestamp() + " ; Status: " + inventory.getStatus().toString());
        }
      
        // // // // // //
      
        // Time now, used for ID
        long now = System.currentTimeMillis();
      
        // Add a new restore to player
        restores.add(now, new RInventory(now,
                me.getInventory().getStorageContents(),
                me.getInventory().getArmorContents())
        );
        System.out.println("Saved player's current inventory. ID: " + now);
      
    }

}
Attached below are some screenshots:
Note that these pictures are most likely outdated. Stuff can have changed, however, if changed too much they will be updated.


FAQ:
  • I paid, but can't download!? Don't worry! Due to PayPal's policy changes in my country, they have decided to make me unverified. This means that I will have to manually approve payments you send to me. This will mostly take 10 minutes if I'm online.
  • Where are the pages? They are there now! Download the latest version.
  • Can I get the source? I have opened a private repo at www.gitlab.com, where you will be added and can download the newest source, once you purchase the source which you will have to PM me about.
  • I got errors! What shall I do? What a shame! Calm down, relax, and pull it straight-- you won't die. I am always happy to assist a consumer who has a good attitude. Errors can be quite common, and the source of the error can be a wide set of things. Including but not limited to Java version being incompatible, spigot/Bukkit version being incompatible, an unexpected result occurred, etc. it's important that I know so I can expect it in the code. If you get what I mean. Don't post in the review section regarding your error, instead PM me or post respectfully in the Discussions thread created for this resource. Include a whole error and which version of Java and Spigot you are running; from here you will have to communicate with me if I need any further information.
  • I want a new feature added! Can you please, please, please add it? Oooh, so you're the creative kind of type? We developers love those type of people and are always happy to hear what kind of innovation you can bring to our products. Again, it's important that you do not use the reviews section, but rather PM me or use the discussion. I will make an evaluation of your idea, and decide whether I want to implement it or not, it's not up to you, even though I rarely turn down ideas which I know will bring glory to the plugin.

Latest updates

  1. N/a

    N/a
  2. Fixes duping bug with NPCs.

    The plugin no longer saves inventories of NPCs.
  3. 1.1 (3.2.2)

    1.1 (3.2.2)

Latest reviews

cheers
Tank U
BlackSpigot.com
BlackSpigot.com
Glad you enjoy!

Similar resources

Inventory Restore+: REMASTERED qtChan
Critical plugin to HCF Servers, but also important to normal survival, etc. Now remastered!
4.00 star(s) 2 ratings
Downloads
467
Updated
Inventory Restore+: REMASTERED | LIMITED OFFER: SOURCE FOR FREE PremiumPicker
Critical plugin to HCF Servers, but also important to normal survival, etc. Now remastered!
1.50 star(s) 2 ratings
Downloads
135
Updated
Inventory Restore+ Ace
Critical plugin to HCF Servers, but also important to normal survival, etc...
4.00 star(s) 4 ratings
Downloads
548
Updated
BlackSpigot General Chat
Rules Help Users
    BlackSpigot.com @ BlackSpigot.com: my vip was not activated Hello, PM me the email you used to pay.
    Top