[ECON] GoldStandard v1.0.1 - Item based dynamic currency system for iConomy [953]

Discussion in 'Inactive/Unsupported Plugins' started by Ballistic Buddha, Apr 26, 2011.

  1. GoldStandard: A Driving force for free market economies
    Version: v1.0.1

    Note: A third party library "GNU Trove" is required in order for the plugin to run, it is included in the .zip version and can be downloaded independently here.

    A Note to those upgrading to v1.0. You will have to either update or drop your SQL tables:
    1. MySQL users, use this script.
      1. Edit the file with your favorite text editor and replace both instances of <schema> with your schema's name.
      2. If you are running your mysql server on linux execute the following command from a terminal as root: "mysql -h [hostname-or-IP-address] -u [username] -p [database-name] < update.sql" and replace everything within the [] to the variables relavant to your instance, it will then ask you for your password from the tty and you would be done.
      3. If you are not running linux or are unfamiliar with the shell, just copy everything in the update.sql file after replacing the <schema> variable then just run those 2 commands any way you choose. I would also like to recommend the MySQL Workbench, which is a pretty solid GUI utility to administrate your database, which also includes some utilities from running SQL scripts or if you prefer you may just run commands directly from the GUI to update your database.
    2. H2SQL users, hang tight as I brew up a solution for those of you who don't want to reset your price values, if you are okay with resetting your prices, just delete the .db files in your plugins/GoldStandard/ folder
    In brief, this is a dynamic currency system for iConomy that lets you set parameters that will let the value of currency fluctuate (if specified). As of Version 1.0 it can now be used as a full-fledged dynamic economy, complete with any mixture of relative and independent price scaling! There are also options to use static pricing mixed in with dynamic pricing.​

    More About GoldStandard (open)

    So, I mainly started making this plugin a little while ago to get my feet wet with the bukkit API. It started out as just a way to sell a single item only, but I have since updated it to be more modular. The primary purpose of this plugin is to accompany an economic system similar to iConomyChestShop that is more trade and barter based, rather than based on selling and buying items directly to and from the server. However I noticed that the problem I had once I first set up iCS was that although people could buy items sold by other players, people had no means of actually generating money, as I didn’t quite fancy the idea of letting everyone sell items to chests. Hence, GoldStandard was born!

    GoldStandard is a selling system based on the idea of scaling prices based on supply and demand. Currently, the plugin only allows you to sell one specific type of item such as Gold Ingots, useful due to their rarity and lack of practical use, thus basing the driving force of the entire server’s economy on who has the most gold, and indirectly relating the value of all items in-game to the price of gold (or similar item).

    When used in conjunction with an adequate trading and buying system to act as a type of auction house, admins may indirectly control the price of all items on the server by directly adjusting the price of one item. There will be no longer be a need for admins to set specific values for any items or minerals except for the chosen item; rendering the need for setting prices for new items redundant. The prices of all items will eventually reach equilibrium as they adjust based upon how the players decide to buy and sell items to other players. With this plugin running alongside a “finite” buying system, admins might find it easier to stabilize an economy by adjusting the price of gold to the right range that suits their needs.

    Features
    Price Scaling
    Note: I'm currently working on getting better examples and explanations of how this works, but for now you can download the .zip version and examine the sample config included within it.
    The price of items works by either using static or dynamic pricing, using the following formulas:
    Code:
    For Dynamic Pricing (never goes outside the bounds specified):
    <current price> = <base price> - (<ratio>*<# of transactions>)
    For Static Pricing:
    <current price> = <base price>
    The number of transactions is found by querying the database for the number of items sold in the past X days (where X is a number specified in the config file)
    Relative items scale in relation to the base item. Making them effectively a sub or super unit of the base item. Transactions of relative items are effectively weighted based on their "relation" variable. Meaning that selling one relative item with a relation of .1 is effectively one 10th of a sale of the base item. Alternatively, if the ratio is 10, it will effectively count as a sale of 10 base items.

    Selling In-game
    Selling and Buying with GoldStandard can either be done commandless or via commands. For the non-command option, you must first create a "sell list", which is a list of all items that you want to sell. To modify this list use the commands /gsadd and /gsremove, you can add and remove multiple items with one command by comma separating their names/ids. After you have created your sell list, put a stack of all of the items you wish to sell into a furnace, chest, or dispenser in any slot, then left-click the container with the sell tool (Gold Sword by default), and viola! Minecash! Any items not in your sell list will remain untouched. If you’re really impatient you can just keep hitting the furnace while you are smelting gold ore, given that your action cooldowns aren't too long. You can also use commands in addition if specified in the config.
    Buyback
    You may also buyback items if allowed, to buy w/o commands you must first specify a buy item and quantity with /gsset. For instance, if I wanted to buy redstone in stacks of 8 the command would be /gsset redstone 1. After you specify a buy item, simply hit an empty valid container with the sell tool to buy the item stack. Alternatively, if the command option is enabled, you may use /gsbuy to buy multiple items at once. Buying an item will increase the value of the item relative to the ratio.
    Commands (open)

    Note: ItemIDs are synonymous with their nickname
    • /gsworth || /gsprice <itemIDs>- displays the current sale price for the selected items, comma seperate item names for multiple checks
    • /gssell || /gsell <items> <quantities>[Block Option] - sell x of item taken directly from your inventory
      • Comma sperate items and quantities, qtys match items in their respective order
      • The block options are ~ and *
      • Append the special character to the end of the amount like so:
      • /gssell 20~ - this sells 20 of the item in your inventory and counts blocks as 9x where applicable
      • /gssell 20* - same as ~ but will return your "change" in blocks if applicable
      • These characters do nothing if not applicable or not allowed
    • /gsbuy || /gbuy <items> <quantities> - buy items and insert them directly into your inventory
      • Comma sperate items and quantities, qtys match items in their respective order
    • /gsreset || /gsclear - Admin command that resets all prices back to their initial prices.
    • /gsadd || /gsa <items>[Block Option]
    • Comma separate items to be added
      • Append ~ to the end of the name/id to include blocks
    • /gsremove || /gsr <items> - remove items from your sell list
    • /gsset || /gss <item> <quantity> - set your item and stack size to buy
    • /gslist || gsl <but|sell> - display the items you are currently buying or selling
    • /gshistory || /ghistory <ItemID|Nickname|*> [sales(+)|purchases(-)|net(blank)]- Command that queries the database for the number of transactions
      • * is a wildcard that gets the history of all items
      • the type argument is optional, if blank it will get the net transactions
      • + and - are shorthand for sales and purchases respectively


    Requirements
    • GNU Trove (Packaged with the .zip file)
    • iConomy (iC Version 5.0+ as of GS version 0.7)
    • Permissions (If enabled)
    • MySQL (optional, requires mysql-connector-java-bin.jar in lib folder)
      • if you have already setup iConomy, you should already have this
    • H2SQL libraries (optional, requires h2.jar in lib folder)
      • if you have already setup iConomy, you should already have this
    • LWC (If using container protection)
    Configuration

    There are now 2 .yml config files. config.yml is for general plugin settings such as the duration, reload interval, and data source. items.yml is where all item-related configurations are set; INCLUDING price scaling options such as base, min, max, and ratio. Some settings are in both such as Buyback. In this case the setting in config.yml is the default and can be overridden for a specific item in items.yml.
    Example using Dynamic Pricing

    config.yml
    Code:
    #ItemID of the selling tool for commandless selling
    SellTool: 283
    #how long to keep records (in days)
    Duration: 7
    #How often (in minutes) to clean the database of old records (if needed)
    Reload Interval: 60
    #This option applies only to Gold Ingot, Iron Ingot, Diamond Gem, or Lapis Lazuli Dye
    #it enables selling one block of the equivilent material as 9x of the item
    #if an item cannot be represented as a block, this is ignored
    #this can be overridden for a specific item in items.yml
    Allow Block: true
    #enable buying (enforces the ratio in an inverse fashion)
    #this can also be overridden for a specific item in items.yml
    Buyback: false
    #Options: Chest, Furnace, Dispenser, Command
    SellMethods:
        - Furnace
        - Chest
        - Command
    #Protection system to use (LWC or none)
    Protection: LWC
    #MySQL, H2SQL or none
    Data: MySQL
    MySQL:
        database: minecraft
        hostname: localhost
        port: 3306
        username: mc
        password: pass
    
    items.yml
    Code:
    #Items are listed on level 1 by a specified nickname
    #the nickname can be anything as long as they are unique, but be aware that it will be shown in game
    #Currently, only one item is allowed and it must be a "base" item
    Items:
        Gold:
            #Decimal itemID of this item
            Id: 266
            #This is an optional override of the setting in config.yml for only this particular item
            #To use the default, delete this line
            Allow Block: true
            #This is an optional override of the setting in config.yml for only this particular item
            #To use the default, delete this line
            Buyback: true
            #There can only be one base item, it is a special item that is considered the basic unit of a multi-tiered economy
            #The price of the base item is always calculated from the base price
            #can only be base in version 0.8
            Type: base
            #base sale price of the base item
            Price: 100
            #minimum sale price of the base item
            Minimum: 50
            #maximum sale price of the base item
            Maximum: 200
            #decrease in price per item sold, increase per item bought
            #Sorry, but this must be in decimal format now :(
            Ratio: .1
    
    In this example, the item to sell is a Gold Ingot and the selling tool is a Gold Sword. The price of gold starts at 100 and decreases by 0.1 for each gold ingot sold until the price reaches 50, at that point it will stay at 50 until either transactions older than 7 days get cleaned out (assuming that a lot of the transactions didn’t just now take place) or the price gets reset by an admin. In other words, If the price is currently at the ceiling, and I sell enough gold to bring it down to the floor price right now, the price will stay at the minimum for 7 days unless reset by an admin. However, if I were to sell about half of my gold now and bring the price down to 75, and than 4 days later sell the rest of my gold to bring it down to 50 (assuming the rest of the players on the server haven’t sold any gold in the past 4 days) after 3 more days from this point (7 days from the first sale), the price will adjust as if I had only sold the second half of my gold.

    Example config.yml file using Static Pricing
    config.yml (open)

    SellTool: 283
    Reload Interval: 60
    Allow Block: true
    Buyback: false
    SellMethods:
    - Command
    Protection: none
    Data: none


    That’s really all you need. You can keep the above items.yml exactly as it is in the dynamic example above, and all of the scaling options will be ignored. Just be sure to set data to “none”, because it will cut down on the resources this plugin uses by A LOT. The same goes for block protection, if you don't want to enforce block protection (which is recommended if you are only using the command option), set the option to "none".

    Permission Nodes
    Code:
    goldstandard.sell - enables selling and use of the commands /gsa, /gsr, and /gsl sell
    goldstandard.buy - enables buyback and use of the commands /gss, and /gsl buy
    goldstandard.worth - enables the command to check the price
    goldstandard.reset - enables force resetting back to the base price (recommended as an admin-only command)
    goldstandard.history - allows the player to run history queries
    
    Planned Features for the Future
    • Ability to use SQL to store item information
    • Formula declarations for relative items (e.g. '<Gold>/10') to declare relative items more intuitively, or at least a yaml node to set what an item is relative to, instead of having the relation necessarily relating to the base item.
    • Add option to /gshistory to select based on the user who did the transaction, and head/tail options
    • "odd-item" support (like dyes and cloths)
    Wishlist (things I’d like to do if I have the time)
    • Exponential price scaling (dynamic relations)
    • Create an option to retain logged transactions even after they have expired
    • A web-api to query transactions (even past their expiration) to show trending of item prices.
    Known Issues:
    • Double chests act strange, selling from a double chest will only sell half of the items, thus requiring users to hit both sides of a double chest to sell all items within it.
    • Fractions in the .yml file no longer work, you have to put them in decimal format
    • There is no support for "odd items" such as dyes and cloth, and there is currently no way of using such items as currency.
    Changelog

    • Version 1.0.1
      • Fixed table creation with MySQL, and improved default player values for both H2 and MySQL database tables.
    • Version 1.0
      • Added support for multiple items. (see the example configs for how to implement)
      • Fixed an exploit with buyback by making the buy price have a pre-increment price adjustment
      • Added option to not use permissions.
      • Further implementation of trove to help reduce the memory footprint
      • Added action cooldown for buying and selling (independently)
      • Options for "buyback" and "allow block" can now be overridden on a per-item basis
      • A bunch of other tweaks and bugfixes, too many to list.
    Older versions (open)

    • Version 0.8
      • Switched to a new configuration format, containing 2 files: config.yml and items.yml, see the configuration above for more info.
      • Added command /gshistory for admins to run a basic query of past transactions from in game
      • Added an option to sell Iron,Gold, and Diamond blocks as 9x ingots/gems.
      • Redesigned the internals for buy and sell procedures in preparation for v1.0
      • A few other minor bugfixes
    • Version 0.7.2
      • Resolved some database connection issues that caused issues when reloading the plugin rapidly (like by doing a /reload from in-game)
    • Version 0.7.1
      • Fixed a bug causing errors when selling the last of your item via command
    • Version 0.7
      • Added H2SQL support :D
      • Updated to iConomy5
      • Added "Reload Interval" parameter in the config
      • Added "item" database column to prepare for multi-tiered currencies
        • If you were using a previous version you will either have to alter the table to include the "item" column or just delete the table (which will obviously reset your price)
        • If you switched to using H2SQL, no worries, your DB is already properly formatted
    • Version 0.6
      • Added Option to enforce LWC block protection while selling from containers
    • Version 0.5
      • Added Buyback option (has an increase in price per transaction)
      • You can now use any of: Chest, Furnace, Dispenser to buy/sell gold
      • Added option to buy/sell via command
    • Version 0.4
      • Initial release to the public
     
    Llamageddon, smickles and kahlilnc like this.
  2. Offline

    xeology

    A few suggestions.
    • Make command-less an option, but not mandatory, aka ability to use /gsell or similar.
    • I actually use a multi-lateral standard on my server so an option for multi-lateral management will not only appeal to some but also allow for playing currencies in the form of a stock market like system.
    • Ability to choose a chest.
    Great plugin though! Keeping an eye on this one for my server!
     
  3. Offline

    Plague

  4. I can include sell method options in the next version, shouldn't be difficult. I'll probably just add a new variable in the yaml file:

    SellObject: (furnace/chest/command)

    Also, I'll look into multi-lateral standards

    Sorry about that, I was attempting to model this after that template, but the problem was that I copied it into a google doc, worked on it for a while in there than when I finished editing copied everything verbatim into the forum post, and everything related to formatting was effed, and I thought I bushed up the majority of it. I've got it a little more presentable now, hopefully it's good enough.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 14, 2016
  5. @xeology
    FYI, I just made version 0.5 which adds chest selling, command selling, and a buyback option so in a sense you can play the gold market kind of like a stock market. However, I'm still a little confused at your request about multi-lateral management, I'll probably send you a PM to get some clarification on this.

    Also, because I just added selling directly from chests, LWC integration is now at the TOP of the priority list.
     
  6. Another update has been released, the plugin now has an option to enforce LWC protection rules!

    P.S.: if any of you would like to specifically see more plugin integration support (e.g. lockette, SQLite, another economy backbone) let me know. I'm willing to make an attempt at supporting them, but if no one asks for it I'll assume no one wants it.
     
  7. Offline

    Noxturno

    where do I get and what is MySQL ? xD?
     
  8. Offline

    Dysalot

    Would appreciate h2 support. I know I really need to figure out mySQL, but I can never seem to get it to work with my hosted server that includes mySQL. But I love the thought of this plugin, and will wait until either I figure out the mySQL setup, or this gets h2 support.
     
  9. Offline

    Dysalot

    does this work with iConomy 5.0 yet?
     
  10. Not yet, I will be working on it though. Also, H2sql is coming in the next version.
     
    kahlilnc likes this.
  11. Offline

    Dysalot

    Awesome, and I did manage to get it to work with mySQL, but then I have the iConomy issue lol. This plugin is too great of an idea to be forgotten.
     
  12. Offline

    kahlilnc

    Can you add configurable ingot currency and a sub currency like pennies. So lets say I have 10 iron ingot as my currency and 20 coal as my pennies or sub currency. So 10.20.
     
  13. @kahlilnc
    I have plans for the future to make the currency multi-tiered. I.e. ability to have multiple currency items with different values that follow the same price scaling regimen. So then you can have gold with a base price of 100 and, say iron, with a base price of 10. It will use the difference in it's price calculation to increase/decrease each item accordingly. So if your ratio is 1/10, selling one gold ingot will decrease the price of gold by .1, and decrease the price of iron by .01. Alternatively, selling one iron ingot will decrease the price of gold by .01, which will in turn decrease the price of iron by .1 because you configured your lower tiered item (iron) to be valued at 1/10th the value of your base item (gold). I plan on having this feature complete by version 1.0 but there are items of higher precedence that I need to attend to first.

    Version 0.7 (which is about halfway done atm) will include the first steps toward this direction, but it is nowhere near implemented yet. (it's basically just a change in the SQL table format to prepare for this feature to make upgrading easier)

    @Dysalot
    I finished the iConomy5 implementation today, and am currently working on H2 support right now, Hopefully I'll get this done this weekend. This is my first time working with H2SQL so I'm learning as I go along, but thankfully it isn't exceedingly difficult, it's just a rough transition because all of the syntax/grammar is subtly different from MySQL syntax.

    Okay, version 0.7 is out! I have upgraded to iConomy5, and this plugin works completely from your "holdings" or "cash on hand" and NOT directly from a bank account.

    I have also included H2SQL support. For anyone upgrading and NOT switching from MySQL to H2, you will have to alter your table to include a change in design by running just a single SQL command:
    Code:
    ALTER TABLE <your_schema_name>.gslog ADD COLUMN `item` INT UNSIGNED NULL DEFAULT NULL  AFTER `user`;
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 14, 2016
    kahlilnc likes this.
  14. Offline

    freefish

    Love this idea - it's a great way to introduce money into the economy and reward players for mining.

    However, I am running into a bug. I prefer the command-based system since it works from anywhere and doesn't need the wand item - but when I sell gold ingots to the server using /gsell, I end up with a 'ghost' ingot in an available inventory slot that can be used in crafting (I used it and 3 other 'normal' ingots to make a watch and it worked fine) but disappears when I wield it and right click or use it to break anything. It also doesn't count as a gold ingot anymore to the plugin, e.g. I can't sell it.

    Any idea what's going on?

    Here's my config, just in case:
    Show Spoiler

    #ItemID of the item to sell
    Item: 266
    #ItemID of the selling tool
    SellTool: 283
    #base sale price of the item (this is the maximum)
    Base: 100
    #minimum sale price of the item
    Minimum: 75
    #maximum sale price of the item
    Maximum: 125
    #how long to keep records (in days)
    Duration: 3
    #How often (in minutes) to clean the database of old records (if needed)
    Reload Interval: 30
    #decrease in price per item sold
    Ratio: 1/10
    #enable buying (enforces the ratio in an inverse fashion)
    Buyback: True
    #Options: Chest, Furnace, Dispenser, Command
    SellMethods:
    - Command
    #Protection system to use (LWC or none)
    Protection: none
    #MySQL, H2SQL or none
    #none infers static pricing (always uses base price)
    Data: H2SQL
    MySQL:
    database: minecraft
    hostname: localhost
    port: 3306
    username: mc
    password: pass
    #H2 connection info is optional, defaults are used if not specified
    H2SQL:
    username: GoldStandard
    password: gspass
     
  15. @freefish
    Oh snap! You sir, are right. I've reproduced the bug and I have a pretty good idea of what's going on and am working on a fix now. I believe what you were holding was a gold ingot with a stack size of zero, hence the weird behavior. It seems to only happen when you sell the last of your gold in your inventory. Sorry about that, it will be fixed soon.
     
  16. Offline

    freefish

    Not a problem! Yep, that sounds about right. Looking forward to trying the fixed version :)
     
  17. Just fixed it :)

    Also, 0.7.1 contains some inactive code atm (which is why it is notably bigger for a small fix), but it currently does nothing at all, and isn't even referenced. It's just a placeholder for the next version, which is going to be BIG. I think this teaches me my lesson to always push your code to the repo immediately after you are done with a release.
     
  18. Offline

    freefish

    Hmm. I thought this was a problem on my end when I initially reloaded the server the first time I installed it and promptly ran out of server memory, but it seems this happens every time I reload the server at runtime:

    Show Spoiler
    22:55:27 [SEVERE] An error occurred initiating the connection
    java.sql.SQLException: invalid database address: jdbc:h2:plugins/GoldStandard/gsH2data
    22:55:27 [SEVERE] null loading GoldStandard v0.7.1 (Is it up to date?)
    java.lang.NullPointerException
    at com.bukkit.BallisticBuddha.GoldStandard.GSDataH2.createTable(GSDataH2.java:39)
    at com.bukkit.BallisticBuddha.GoldStandard.GSDataH2.<init>(GSDataH2.java:16)
    at com.bukkit.BallisticBuddha.GoldStandard.GSCalc.<init>(GSCalc.java:31)
    at com.bukkit.BallisticBuddha.GoldStandard.GoldStandard.onEnable(GoldStandard.java:79)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:127)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:632)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:218)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:116)
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:94)
    at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:287)
    at org.bukkit.command.SimpleCommandMap$ReloadCommand.execute(SimpleCommandMap.java:201)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:85)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:247)
    at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:394)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:379)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:285)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:394)


    Seems to be some problem with not closing/opening the database right when it's unloaded and reloaded, perhaps.
     
  19. @freefish
    Try removing the H2SQL connection info maybe?
    I'm thinking of removing that from the example config, I don't believe it's even necessary.

    Also, now come to think if it I should probably revise the way the plugin is unloaded too.
    EDIT: I've found the problem, don't know if you were also having an issue on your end, but It did at least lead me to find a problem with the code. fix incoming.
     
  20. Offline

    Zalastri

    Any chance of iConomy 5 support soon?
     
  21. iConomy5 support was added in version 0.7, so if you pick up version 0.7.2 it should be compatible, also I've been developing 0.8 (which should be done by tomorrow) for the past few days and the first thing I did was update to the latest RB of bukkit (766) directly on top of the 0.7.2 code and didn't see any problems, so it should work fine. I'll update the thread title once I finish 0.8. If you are having any issues, post in this thread.
     
  22. Offline

    Zalastri

    Oh, I didn't even notice. Thank you. Can you make it so /gssell without any parameters doesn't return an internal error? Perhaps a message like "You can sell gold with /gssell # for <price> a piece!"
     
  23. Alright guys, Version 0.8 is out! It adds the ability to sell blocks as 9x of an applicable item (Gold Ingot, Iron Ingot, Diamond Gem, Lapis isn't working yet :() and a command to lookup the number of transactions in the server's history. It also requires a new config format and a new library to be placed into the lib directory. The .zip download contains all of the libraries you may need and example yaml files.

    Enjoy!
     
  24. Offline

    Kamlyn

    Sorry, but I have read everything on this page 4 times. Can anyone tell me how to check the price of, sell, or buy anything other than GOLD INGOTS! with standard player accessible commands. PS, this plugin is NOT, and i repeat, is not user friendly. If I have to read this page 4 times, and spend 3 hours working on your mod to sell or buy items without success, you haven't stated enough ease of access information. All i see from your description is how to check/sell/buy gold ingots, and something about a gold sword... Plz help me, i need an economy in my server...
     
  25. The term I try to use to refer to ANY item, not just gold ingots is "sell item". It is the item specified in items.yml as the base item. Gold ingot was used in the examples but it is not in any way shape or form the only option. The item only for the sake of example is gold ingot (with the item id 266), this plugin functions exactly the same if you were to choose coal, iron ingot, a saddle, or any other single item. Single item, being the key phrase here as this plugin does not (yet) support more than one item. That functionality is coming soon in version 1.0. So, if you were to keep your configuration exactly the same except for two lines, and change the id from 266 to any other itemID and the name Gold to any other name you choose, buying/selling/and checking the price will now do so for your new item.

    So in short, to use another item, for instance if you wanted to use diamond gem instead of gold ingot you woud:
    1) change your items.yml so that the item that says Gold: to say Diamond:
    2) change the id under Diamond: that was previously Id: 266 to now say Id: 264
    And now your sell item is now a diamond gem instead of a gold ingot.
    so now when you enter /gsworth from in game to get the price of diamond and /gssell and /gsbuy to buy and sell diamond gems instead of gold ingots.

    I never meant to only specify gold as the only item, I try to use terms like "sell item" or sometimes more vaguely "the item", but the only time I explicitly mentioned gold ingots was in the examples.

    Sorry if I was unclear, but if you are looking to buy/sell more than one item, this plugin will not fulfill that purpose until version 1.0. Also, when v1.0 comes there will of course be a new argument to /gssell, /gsbuy, and /gsworth where you specify the item you want to buy, sell, or check either buy it's itemID or it's nickname. The command-less options however, I'm still having issues on deciding the best way to specify which item you want to sell.
     
  26. Offline

    freefish

    Has this been tested against a recent build? My economy is relying on this now! XD
     
  27. I just upgraded to 818 on my server today (as in like 2 hours ago), and I have tested out the majority of the features and haven't seen any issues, the only thing I haven't tested yet is the buy and sell commands (as I have them disabled on my server). I'll probably test them later tonight and then update the thread title.
     
  28. Offline

    Matt Gill

    I can't get this to work at all in build 818. I tried the jar only and it wouldn't even create the goldstandard folder with the two config files in it. Then I tried adding them manually withe the zip version and it didn't work. Tried deleting the configs and reloading and it still didn't create them.

    Found this in the console:

    Code:
    00:04:48 [SEVERE] Could not load 'plugins\GoldStandard.jar' in folder 'plugins':
    
    java.lang.reflect.InvocationTargetException
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
    rce)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:172)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:194)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:117)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:103)
            at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:339)
            at com.earth2me.essentials.commands.Commandreloadall.run(Commandreloadal
    l.java:19)
            at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsComm
    and.java:60)
            at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsComm
    and.java:55)
            at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.jav
    a:450)
            at com.earth2me.essentials.Essentials.onCommand(Essentials.java:343)
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:12
    8)
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:2
    81)
            at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.
    java:718)
            at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:684)
    
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:677)
            at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:32)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:217)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:401)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:311)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Caused by: java.lang.NoClassDefFoundError: gnu/trove/procedure/TIntIntProcedure
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClassCond(Unknown Source)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$000(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:36)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:24)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at com.bukkit.BallisticBuddha.GoldStandard.GoldStandard.<init>(GoldStand
    ard.java:45)
            ... 27 more
    Caused by: java.lang.ClassNotFoundException: gnu.trove.procedure.TIntIntProcedur
    e
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:36)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:24)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 41 more
    00:04:48 [INFO] SubClassFactory parent ClassLoader [org.bukkit.plugin.java.Plugi
    nClassLoader]
    00:04:48 [INFO] Entities enhanced[0] subclassed[1]
    00:04:48 [INFO] SubClassFactory parent ClassLoader [org.bukkit.plugin.java.Plugi
    nClassLoader]
    00:04:48 [INFO] Entities enhanced[0] subclassed[2]
    00:04:48 [INFO] SubClassFactory parent ClassLoader [org.bukkit.plugin.java.Plugi
    nClassLoader]
    00:04:48 [INFO] Entities enhanced[0] subclassed[2]
    00:04:48 [INFO] [Permissions] (Yeti) was initialized.
    00:04:48 [INFO] ColorSign version 1.0 is enabled!
    00:04:48 [INFO] Loaded Essentials build 2.3.1 by Zenexer, ementalo, Aelux, Brett
    flan, KimKandor, snowleo, ceulemans and Xeology
    00:04:49 [INFO] [iConomy] Logging is currently disabled.
    00:04:49 [INFO] [iConomy] v5.01 (Eruanna) loaded.
    00:04:49 [INFO] [iConomy] Developed by: [Nijikokun]
    00:04:49 [INFO] [Essentials] Payment method found (iConomy version: 5)
    00:04:49 [INFO] Loaded EssentialsGeoIP build 2.3.1 by Zenexer, ementalo, Aelux,
    Brettflan, KimKandor, snowleo, ceulemans and Xeology
    00:04:49 [INFO] This product includes GeoLite data created by MaxMind, available
     from http://www.maxmind.com/.
    00:04:49 [INFO] Loaded EssentialsSpawn build 2.3.1 by Zenexer, ementalo, Aelux,
    Brettflan, KimKandor, snowleo, ceulemans and Xeology
    00:04:49 [INFO] FalseBookBlock v0.85alpha by GeMo enabled
    00:04:49 [INFO] [FalseBook Block] No Cauldrons loaded!
    00:04:49 [INFO] [FalseBook Core] FalseBookCore v0.85alpha by GeMo enabled!
    00:04:49 [INFO] FalseBookExtra v0.85alpha by GeMo enabled
    00:04:49 [INFO] FalseBookIC v0.85alpha by GeMo enabled
    00:04:49 [INFO] [HeroicDeath] 1.8.1.156 enabled.
    00:04:49 [INFO] iChat (v2.3.0) enabled
    00:04:49 [INFO] [iConomyChestShop] version 2.74 initialized!
    00:04:49 [INFO] [iConomyChestShop] iConomy version 5 loaded.
    00:04:49 [INFO] [iConomyChestShop] Permissions version 3.1 loaded.
    00:04:49 [INFO] [MagicCarpet] MagicCarpet version 1.5.5 is enabled!
    00:04:49 [INFO] [MagicCarpet] Take yourself wonder by wonder, using /magiccarpet
     or /mc.
    00:04:49 [INFO] [MagicCarpet] Using Permissions.
    00:04:49 [INFO] [mcMMO] Permissions enabled.
    00:04:49 [INFO] mcMMO version 1.0.09 is enabled!
    00:04:49 [INFO] [Minecart Mania] Debug mode switched to NORMAL
    00:04:49 [INFO] [Minecart Mania] MinecartManiaCore version 1.2.6 is enabled!
    00:04:49 [INFO] [Minecart Mania] MinecartManiaSignCommands version 1.2.4 is enab
    led!
    00:04:49 [INFO] [Minecart Mania] MinecartManiaStation version 1.2.5 is enabled!
    00:04:49 [INFO] [MultiVerse] Permissions Found
    00:04:49 [INFO] [MultiVerse] - Version 1.7.1 Enabled
    00:04:49 [INFO] [MultiVerse] Found iConomy, enabling payments.
    00:04:49 [INFO] [MultiVerse] Loading World & Settings - 'world_nether' - NETHER
    00:04:49 [INFO] [MultiVerse] Loading World & Settings - 'world' - NORMAL
    00:04:49 [INFO] [MultiVerse] 2 - World(s) loaded.
    00:04:49 [INFO] [MultiVerse] Loading Portals
    00:04:49 [INFO] [MultiVerse] 0 - Portal(s) loaded.
    00:04:49 [INFO] [Permissions] version [3.1] (Yeti)  loaded
    00:04:49 [INFO] [iConomy] hooked into Permissions.
    00:04:49 [INFO] [iChat] Found Permissions (v3.1)
    00:04:49 [INFO] [MultiVerse] Found Permissions, enabling commands.
    00:04:49 [INFO] [Minecart Mania] Permissions detected. Using permissions.
    00:04:49 [INFO] [Minecart Mania] MinecartManiaAdminControls version 1.2.5 is ena
    bled!
    00:04:49 [INFO] [Minecart Mania] MinecartManiaAutocart version 1.2.2 is enabled!
    
    00:04:49 [INFO] [Minecart Mania] MinecartManiaAutomations version 1.2.3 is enabl
    ed!
    00:04:49 [INFO] [Minecart Mania] MinecartManiaChestControl version 1.2.5 is enab
    led!
    00:04:49 [INFO] [FalseBook Block] 0 Areas loaded.
    00:04:49 [INFO] [FalseBook Block] 0 Bridges successfully loaded.
    00:04:49 [INFO] [FalseBook Block] 0 Doors successfully loaded.
    00:04:49 [INFO] [FalseBook Block] Gates successfully loaded.
    00:04:49 [INFO] [FalseBook IC] plugins/FalseBook/Transmitter.db not found.
    00:04:49 [INFO] [FalseBook IC] plugins/FalseBook/Receiver.db not found.
    00:04:49 [INFO] [FalseBook IC] 0 Sensors loaded.
    >
    
     
  29. @Matt Gill
    Do you have the trove.jar in your lib/ folder? That folder should be in the root of your minecraft server folder (one level down from your plugins folder). It looks to me like that's whats causing it. Unfortunately that file is now required for the plugin to run at all and it will not download it automatically when the plugin runs, I was having some major issues when I played around with downloading the file when you don't have it as nothing in the plugin gets run at all if you don't have it. As a side note, the zip file is to be extracted from your root minecraft folder, as it will put new files in both lib/ and plugins/
     
  30. Offline

    Matt Gill

    Yes that was the problem It worked, but now It won't. It was working for awhile then it just stopped :( . I guess I will try redownloading the files.
     

Share This Page