[ECON] DynamicMarket V0.6.0 - Versatile Shop Plugin [953]

Discussion in 'Inactive/Unsupported Plugins' started by GoalieGuy6, Jul 3, 2011.

  1. Offline


    DynamicMarket - Dynamic Global Shop Plugin
    Download V0.6.0 (JAR | Source on GitHub)

    Current version: 0.6.0
    Tested against: CraftBukkit build #953

    JAR Mirror (Version 0.6.0)
    Older Versions

    Note: Upon first run the plugin will attempt to convert your database in order to add decimal support to item prices. I was unable to test the conversion code too extensively so if you run into any errors with this please post your server log so I can take a look.

    Most of this was copied from the original thread found here. This is the first plugin I have ever worked on and also the first Java project I have worked on, so I am sure there is a lot that I could've done better. For now I haven't done much more than add a few small features and fix a couple bugs. If you have any requests or experience any bugs/errors please let me know and I'll see what I can do.

    Some of the information below is outdated, I am working on updating the post.

    Read this before proceeding

    READ THIS (open)
    This plugin has a great deal of flexibility, but the price of more flexibility is more command options to control that flexibility. Computers just aren't very psychic.

    While in-game help exists for commands, the output from /shop help (<topic>) is intended to be a quick reference, not exhaustive documentation. Full instructions simply won't fit on the MineCraft client's tiny text display.

    You should read and understand the following sections before installing this plugin and setting up your shop. If not, you should at least read and understand the following sections while you are setting up your shop items.

    The big feature: Dynamic pricing. Items can be set to increase in price as they are purchased from the shop, and decrease in price as they are sold back, simulating open market conditions. The initial prices of items are just considered a starting point - user transactions will eventually adjust an item's price to a near-ideal level, based on actual value vs. rarity.

    However, as of 0.4.5, the configuration fields are now flexible enough to allow a range of behaviours, from fixed pricing with no stock limits, to fully-dynamic pricing with finite stock levels.

    This is by no means "complete" in the sense of "finished adding features", but it is complete enough to be functional and usable.

    Current Features (open)
    New & Current Features:
    • Buying and selling of items:
      • Item prices can now have decimals in them!
      • Checks if a player has enough space to hold items before purchasing!
      • Item prices can be set to dynamically adjust according to supply and demand. This is highly adjustable, including the rate of price increase/decrease per transaction, optional hard overstock/understock limits, price ceilings/floors, etc. Leaving all the extra features turned off makes an item's price fixed and always-in-stock, like a basic "flat rate" shop.
      • Subtypes of items are fully supported.
      • List of items in the shop is broken into pages, accessible by number.
        • Partial-name searching! "/shop list wood" shows everything with "wood" in the name.
      • Item names for buy/sell/info also use partial substring matches.
      • A dynamically-priced item might cost more for 10 items than the cost of 1 item multiplied by 10, due to stock depletion. So, the "/shop <id>" command now takes an optional ":<count>" parameter, so you can get a quote for the actual buy/sell price of larger numbers of items.
    • Administration:
      • Set OPs to have all admin permissions in the config!
      • Shop items are edited via a "tag" system, so you don't have to re-enter every field for each small change. Plus there's a few utility tags which do other things to an item's record...
      • Item names are now editable, and will persist (independent of items.db) until the item's record is deleted.
        • This also makes items.db a convenience instead of a necessity, since items can be added by ID and then immediately renamed.
      • A "Default" item exists in the shop, which cannot be bought or sold, but serves as the base data for any new items you add to the shop. Any tags not supplied when you add an item will be copied from whatever you put into "Default".
      • Basic sanity-checking on input data has been added. Also, adjusting an item's bundle-size will rescale its price automatically.
      • Items can be set to be purchasable but not sellable, or vice versa. (Set either price to -1 to disable that transaction type for that item.)
        • Tags like "canbuy:n" and "nosell" can now be used.
      • An extended in-game help system. "/shop help" lists available commands and help topics. "/shop help <topic>" gives help on a shop command or other shop-related topic listed in the main help.
      • The list of commands displayed is filtered by the user's current permission level.
      • Shortcuts for all commands (except for database reset).
      • All commands except for "/shop buy" and "/shop sell" can be accessed through the Bukkit console. No need to log in to add or update items!
      • Access to the entire shop is now restrictable by permission.
      • Highly informative error messages, to help reveal why your database exploded. (Which really shouldn't happen, but you never know...)
      • The shop DB can now be exported to a .csv file, edited in your favorite spreadsheet, and re-imported back into the database, making large-scale changes easier.
      • The revenue/cost of transactions can now be transferred to another account. With the basic plugin, this can be an admin's iConomy account, or a dummy "GovernmentBank" account. (Don't use that name, or some bright spark will register that username and exploit you.) With a wrapper plugin, this can be set to link a shop's funds directly to an owning player's iConomy balance.
      • Transaction logging to a comma-delimited file, ready to import into a spreadsheet for nefarious financial analysis!
    Market Mechanics (open)
    Quick Market Mechanics Description:

    • Instead of a "buy price" and a "sell price", items now have a "base price" and a "sales tax". The "buy price" is based on the base price (adjusted by stock, if set to do so), and the "sell price" is based on (<buy price> - <sales tax%>). So if the sales tax is set to 25, then an item's selling price will be 75% of its purchase price. (The sales tax is entered as a number from 0 to 100, representing 0% to 100% tax.)
      • Using the old "/shop add <id> <buyprice> <sellprice>" format still works - the plugin just calculates the base price and sales tax, so that the buying and selling prices come out right.
    • Shop items have a "stock level", which is not necessarily a literal count of items in stock. By default, the stock level is considered an offset from baseline, rather than an absolute count.
      • Items with stock near zero are considered to be in "average" supply, and will be priced at their base price.
      • Items with a positive stock are considered "in surplus", and will be priced below their base price.
      • Items with a negative stock are considered "understocked", and will be priced above their base price.
      • This interpretation of stock levels can be made to behave like literal counted stock, by setting an item's StockFloor to zero, which prohibits negative stock.
    • Items have a "volatility", which indicates how quickly the price changes based on changes in stock level. It represents the percent increase in an item's price per item purchased, multiplied by 10000. V=1 (the lowest level) means that 100 items would have to be purchased to raise the price by 1%. V=10000 (the highest level) means that 1 item purchased would raise the price by 100% (doubling the price). (More examples in tags.txt)
      • There is also "inverse volatility", which represents the number of items needed to be bought in order to double the buying price (or halve it, if selling). This is more convenient for some people's mindsets, and is converted into volatility when entered.
    • The "sell price" is actually calculated from the buy price at the current stock level + 1, rather than the current stock level. This is to prevent gaining endless money by buying an item (driving the price up) then immediately selling it back (dropping the price) - if <sales tax> = 0, then buying-then-selling like this produces zero net gain/loss (as it should).
    • The tag presets "fixed", "float", "finite", and "flat" allow you to quickly set up common options. If used with the "Default" item before adding items to your shop, this will allow you to set the overall behaviour of the shop easily. See Tag Reference for further details.
    Commands (open)

    <Angle Brackets> denote parameters.
    (Round Brackets) denote optional sections.
    The brackets themselves are not part of the command; they are just used to describe syntax. Brackets should not be typed.
    If executing shop commands through the Bukkit console, leave off the initial slash.

    /shop - Shows the main help page. Lists commands and shortcuts.
    /shop help - Ditto.
    /shop help <topic> - Shows help on the given command or subject.
    /shop help tag <tagName> - Shows help on the given item tag.
    /shop <id>( :<count>) - Shows current buy/sell information on the given item.
    <id> can be an item name or a type number with an optional subtype:
    <id> = <itemName> | <itemID> | <itemID>,<subtypeID> | Default
    If <count> is used, shows the total price for the given number of items/bundles.
    /shop list (<partname>) (<pageNum>) - Lists a page of items in the shop. Default page = 1.
    If <partname> is used, lists only items with <partname> as part of their name.
    /shop buy <id>( :<quantity>) - Purchases an item. Default quantity is 1 bundle.
    /shop sell <id>( :<quantity>) - Sells an item. Default quantity is 1 bundle.
    /shop add <id>( :<bundleSize>) (<buyPrice> (<sellPrice>)) <tagList> - Adds an item to the shop list.
    <buyPrice> and <sellPrice> are accepted for convenience, and are internally converted to BasePrice and SalesTax.
    Unused tags will have their data copied from the Default item.
    Transactions will be in multiples of <bundleSize>. Default quantity is 1 item per bundle (unless overriden with the Default record)
    /shop info <id> - Shows much more detailed information about an item in the shop, such as stock level, volatility, etc.
    /shop update <id>( :<bundleSize>) (<buyPrice> (<sellPrice>)) <tagList> - Edits an item's shop data record.
    Data is first copied from the old record, then tags are applied in order of entry.
    <id> can be "all", applying changes to all items in the shop list.
    /shop remove <id> - Removes an item from the shop list.
    /shop reload - Reboots the plugin, reloading the configuration file and items.db.
    /shop reset - Deletes and recreates the shop database from scratch. Asks for an extra confirmation before doing so.
    /shop exportdb - Exports the shop database to a .csv file. The name and location are configured in SimpleMarket.settings. (Default: Plugins/DynamicMarket/shopDB.csv)
    /shop importdb - Imports a .csv file into the shop database. Same file location as used by the exportdb command. Note that the previous contents of the database are NOT cleared out before importing, so you may want to do a "/shop reset" before importing. The file's format MUST match the format of the exported file (except for quote marks, which are stripped out on import).
    Permission Nodes (open)
    Permission Nodes:

    'dynamicmarket.access' : Grants basic access to the root /shop command.
    'dynamicmarket.buy' : Grants purchase rights.
    'dynamicmarket.sell' : Grants selling rights.
    'dynamicmarket.items.add' : Grants the ability to add new items to the shop.
    'dynamicmarket.items.update' : Grants the ability to edit items in the shop.
    'dynamicmarket.items.remove' : Grants the ability to remove items from the shop.
    'dynamicmarket.admin.reload' : Grants the ability to reload the plugin's config and db.
    'dynamicmarket.admin.reset' : Grants the ability to reset the shop's database.
    'dynamicmarket.admin.db' : Grants the ability to export and import the shop's database using .csv files.
    Installation/Setup (open)
    Step 1) Make sure you have all the required plugins/dependencies
    Step 2) Copy DynamicMarket.jar into your Plugins/ folder.
    Step 3) Add the permissions if you are using a permission plugin.
    Step 4) (Re)Start your MineCraft server. Errors may be thrown to the console, but the file Plugins/DynamicMarket/DynamicMarket.settings should be created.
    Step 5) Edit DynamicMarket.settings to suit your needs.
    Step 6) Use "shop reload" from the console to load the edited config file.
    Step 7) Use /shop add to fill the market with tasty blocks at scandalous prices.

    Note: You WILL want to use "/shop update default" to set up some sensible default values for the items you will be adding, so you don't have to do so much typing for every item. (Or at least inspect the Default entry, to be sure you agree with it.) If you want to make all of the items in the shop use dynamic pricing, set up the parameters in the Default item FIRST, so you don't have to go back and modify 100+ items to support variable pricing.
    Configuration (open)
        # Shop tag is what is displayed before most shop output  Default is [Shop].  Improved coloring system coming soon
        shop-tag: '{BKT}[{}Shop{BKT}]{} '
            # Whether or not shop transactions should be logged
            log-transactions: false
            # The file to log transactions in (located in plugins/DynamicMarket)
            log-file: transactions.log
            # If true the file will save after every transaction.  If false the file will save on server shutdown
            log-auto-flush: true
            # Maximum number of items (not bundles) a user is allowed to buy in one transaction
            max-items-buy: 64
            # Maximum number of items (not bundles) a user is allowed to sell in one transaction
            max-items-sell: 64
        # Database type, either sqlite or mysql
        type: sqlite
            # The file to store an sqlite database in (lcoated in plugins/DynamicMarket)
            file: shop.db
            # URI for your mysql database
            database: jdbc:mysql://localhost:3306/minecraft
            # MySQL username
            user: root
            # MySQL password
            password: pass
            # MySQL database engine (recommended MyISAM)
            engine: MyISAM
        # If set to true DynamicMarket will ignore the permissions plugin
        # Regular users get 'dynamicmarket.access', 'dynamicmarket.buy', and 'dynamicmarket.sell'
        ignore-permissions: false
        # Whether or not ops should get all permissions
        op-permissions: false

    Changelog (Full Changelog)
    • Added message.yml file
      • Almost all messages can be configured
      • Colors supported
    • Bug fixes
      • Fixed some settings not being loaded properly
      • No more NullPointerExceptions (hopefully)
    • Improved auto-update script
    • Converted config file to yml
      • Your DynamicMarket.settings will be converted automatically
    • Fixed inventory space check for items with subtypes
    • Rewritten API
      • DMWrapper update coming soon
    DJ_Idol and Juze like this.
  2. Offline


    is there a good market for downloading???
  3. Latest release is working perfectly so far :)

    Request: can you please add a config flag true/false, that, when true, only allows /shop buy with empty hands? Not sure if this needs to be in the wrapper instead?

    That would fix a really problematic shop exploit when using command signs!
  4. Offline


    That shouldn't be too hard, I will add it into the next release for you.
  5. Epic, thanks :D
  6. Offline


    Thank you so much for taking this on, I will give it a try tonight! Just a suggestion, it would be nice if it could generate a price list html

    Also has anyone got a working database with decent prices already set that I could copy!
  7. Offline


    I am working on a PHP script to display the prices on a website, although if enough people would like a generated HTML one I can look at doing that too.
  8. Any news? People really miss their command signs haha :p
  9. Offline


    I've been a bit busy the past couple days working on a private plugin, I'll add this in real quick and release it in a bit.

    Update: Here is a quick fix for you. It doesn't create the config option automatically yet, just add the config option "empty-hand-required: true/false" somewhere under the general: node, i.e.

        empty-hand-required: true
            log-transactions: false
            log-file: transactions.log
            log-auto-flush: true
            max-items-buy: 64
            max-items-sell: 64
  10. Thanks, but you added it to the wrong action lol :p

    The exploit is in shop SELL, not in shop BUY. Now buying requires empty hands, and selling still works with anything in hands :<
  11. Offline


    You asked for buy before, but I will add an option for selling to :p
  12. Sorry I said it wrong then, the exploit is in sell only :(
  13. Offline


    Hi, thank you for this great plugin. But it would be nice to have ability to sell/buy items by clicking on signs. Like iConomyChestShop but sign will only contains "item's id" and "amount to buy per click". Leftclick to sell and rightclick to buy.
    Please, understand me right - I don't ask you to make a "fully physical" system (with chests and items placing like iConomyChestShop). I just want to see a "physical alias" for "/shop buy" and "/shop sell" commands, the items by itself can still flying in aether :).
    I'm need this because I'm working about to made my server where users can sell/buy items to realistic shop with minimal involving of their brain. :D
    Or if my suggestion can't be done recommend me plugin with features like i've discribed and dynamic prices too.
    Would be nice if you will made this.

    P.S. Sorry if I'm bad in English. Hope you understood my message. :)
  14. You can just use CommandSigns for this, albeit they currently have an exploit, as we've been discussing in this thread. The entire point of this plugin is to create a global market, you can then localize it with shop locations with DMwrapper and/or signs using CommandSigns.
  15. Offline


    Oh, Thank you very much! That's what I searched for. Now minecraft can trully become worldofwarcraft :D
  16. Offline

    unimatrix Bukkit Sponsor

    is there a way to chat on irc? i need some help with dynamic market .
  17. Offline


    If I understand correctly, you're looking for localized or physical shops, yes?
    If so, @GoalieGuy6 is currenty updating the DMWrapper, along with dynamic market.

    DMWrapper basically makes it so Dynamic Market has physical shops, I believe.
    I'm not sure If it's finished, but The download is on his github:
  18. Offline

    unimatrix Bukkit Sponsor

  19. Offline


    Nope, not directly physical shops, just looked about how to make signs execute buy and sell commands. So, the problem solved two posts above. :)
  20. Offline


    Okay, so I made the leap and installed this on my server.

    I added stone to my shop at a price of 45 and sell of 35 and a bundle of 64.

    I bought about 100 bundles with no price variation at all. Is it the volatility that makes the prices fluctuate and how do i editted that ingame? I went through the help files, but being an admin means I get a lot of spam in game and quickly grew tired of scrolling back and reentering the command.

    Also, how does sales tax effect it? If i am setting the prices, what bearing does the tax have?
  21. Offline


    you have to change to volatility and i think make the item float with the float tag. and the sales tax is just the difference between the buy price and sale price
  22. Offline


    I am currently looking into this error :)

    DMWrapper has been released here

    In order to let the prices fluctuate, you must adjust the maximum and minimum stock levels. Like @Luis said, the easiest way to do this is use the float tag, i.e. /shop update [item] float.
  23. Offline


    Great, im very satisfied with this so far, much better than having to beet 100 chests and signs in a huge room :)

    Only one problem though, i cant seem to use the /shop importdb command.
    Im getting a [SEVERE]null error. Heres my log:

    Show Spoiler

    2011-07-13 04:27:55 [INFO] Starting minecraft server version Beta 1.7.2​
    2011-07-13 04:27:55 [INFO] Loading properties​
    2011-07-13 04:27:55 [INFO] Starting Minecraft server on​
    2011-07-13 04:27:55 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-904-g9277096-b953jnks (MC: 1.7.2)​
    2011-07-13 04:27:56 [INFO] LWC: Loading shared objects​
    2011-07-13 04:27:56 [INFO] LWC: Protection cache: 0/10000​
    2011-07-13 04:27:56 [INFO] LWC: Native library: plugins/LWC/lib/native/Windows/x86/sqlitejdbc.dll​
    2011-07-13 04:27:56 [SEVERE] Could not load 'plugins\EssentialsGroupBridge.jar' in folder 'plugins': GroupManager​
    org.bukkit.plugin.UnknownDependencyException: GroupManager​
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:133)​
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:199)​
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:122)​
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:118)​
    at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:89)​
    at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:51)​
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:132)​
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)​
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)​
    2011-07-13 04:27:56 [INFO] [Permissions] (Yeti) was initialized.​
    2011-07-13 04:27:56 [INFO] [Permissions] version [3.1.6] (Yeti) loaded​
    2011-07-13 04:27:56 [INFO] Preparing level "Minecraft Server"​
    2011-07-13 04:27:56 [INFO] Preparing start region for level 0 (Seed: 1502332887)​
    2011-07-13 04:27:57 [INFO] Preparing start region for level 1 (Seed: -1808175566077976195)​
    2011-07-13 04:27:57 [INFO] Preparing spawn area: 40%​
    2011-07-13 04:27:57 [INFO] [BBROTHER] ------------------------------------​
    2011-07-13 04:27:57 [INFO] [BBROTHER] Hello, and thank you for using the TESTING version of BigBrother!​
    2011-07-13 04:27:57 [INFO] [BBROTHER] Please note that, since this is far from complete, there will be many bugs.​
    2011-07-13 04:27:57 [INFO] [BBROTHER] IF YOU FIND ANY BUGS, PLEASE REPORT THEM ONhttp://bugs.nexisonline.net/bb
    2011-07-13 04:27:57 [INFO] [BBROTHER] Please stay tuned in irc.esper.net #bigbrother for updates and build notifications.​
    2011-07-13 04:27:57 [INFO] [BBROTHER] ------------------------------------​
    2011-07-13 04:27:58 [INFO] [BBROTHER] Building `bbdata` table...​
    2011-07-13 04:27:58 [INFO] [BBROTHER] BBData H2 Driver r1 loaded!​
    2011-07-13 04:27:58 [INFO] [BBROTHER] Building `bbworlds` table...​
    2011-07-13 04:27:58 [INFO] [BBROTHER] Building `bbusers` table...​
    2011-07-13 04:27:58 [INFO] [BBROTHER] Permissions enabled using: Permissions v3.1.6​
    2011-07-13 04:27:58 [WARNING] [BBROTHER] 'Help' isn't detected. No /help support​
    2011-07-13 04:27:58 [INFO] [BBROTHER] BigBrother 1.9.1-SNAPSHOT (build #581) enabled!​
    2011-07-13 04:27:58 [INFO] CraftBookCommon 41-a9b78b6 enabled.​
    2011-07-13 04:27:58 [INFO] CraftBookCommon: Permissions plugin detected! Using Permissions plugin for permissions.​
    2011-07-13 04:27:58 [INFO] CraftBookCircuits 41-a9b78b6 enabled.​
    2011-07-13 04:27:58 [INFO] CraftBookCircuits: Permissions plugin detected! Using Permissions plugin for permissions.​
    2011-07-13 04:27:58 [INFO] CraftBookCircuits: Permissions plugin detected! Using Permissions plugin for permissions.​
    2011-07-13 04:27:58 [INFO] CraftBook: Enumerating chunks for self-triggered components...​
    2011-07-13 04:27:58 [INFO] CraftBook: 1250 chunk(s) for 2 world(s) processed (0s elapsed)​
    2011-07-13 04:27:58 [INFO] CraftBookMechanisms 41-a9b78b6 enabled.​
    2011-07-13 04:27:58 [INFO] CraftBookMechanisms: Permissions plugin detected! Using Permissions plugin for permissions.​
    2011-07-13 04:27:58 [INFO] 1 cauldron recipe(s) loaded​
    2011-07-13 04:27:58 [INFO] [DynamicMarket] Initializing Version 0.6.0.​
    2011-07-13 04:27:58 [INFO] [DynamicMarket] Linked with permissions successfully.​
    2011-07-13 04:27:58 [INFO] [DynamicMarket] Version 0.6.0 enabled.​
    2011-07-13 04:27:58 [INFO] [DynamicMarket] Linked with iConomy Version 5 successfully.​
    2011-07-13 04:27:58 [INFO] [EpicZones] Language File Loaded [EN_US.txt].​
    2011-07-13 04:27:58 [INFO] [EpicZones] Loaded GLOBAL Zone [Minecraft Server]​
    2011-07-13 04:27:58 [INFO] [EpicZones] Loaded GLOBAL Zone [Minecraft Server_nether]​
    2011-07-13 04:27:58 [INFO] [EpicZones] Loaded POLY Zone [SpawnTown]​
    2011-07-13 04:27:58 [INFO] [EpicZones] Loaded POLY Zone [Tree Village]​
    2011-07-13 04:27:58 [INFO] [EpicZones] version 0.25 is enabled.​
    2011-07-13 04:27:58 [INFO] Loaded Essentials build 2.4.2 by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology​
    2011-07-13 04:27:58 [INFO] [Essentials] Payment method found (iConomy version: 5)​
    2011-07-13 04:27:58 [INFO] Loaded EssentialsChat build 2.4.2 by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology​
    2011-07-13 04:27:58 [INFO] Loaded EssentialsGeoIP build 2.4.2 by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology​
    2011-07-13 04:27:58 [INFO] This product includes GeoLite data created by MaxMind, available fromhttp://www.maxmind.com/.​
    2011-07-13 04:27:58 [INFO] Loaded EssentialsProtect build 2.4.2 by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology​
    2011-07-13 04:27:58 [INFO] Loaded EssentialsSpawn build 2.4.2 by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans and Xeology​
    2011-07-13 04:27:58 [INFO] [Giant Trees] version 0.3.1 is enabled​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command zeus.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command godmode.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command jesus.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command die.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command slay.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command maim.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command inferno.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command superjump.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command gaia.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command heal.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command godpowers.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command vulcan.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command vulcan.​
    2011-07-13 04:27:58 [INFO] [GodPowers] Successfully registered command demigod.​
    2011-07-13 04:27:58 [INFO] godPowers version 2.2 is enabled!​
    2011-07-13 04:27:58 [INFO] [GodPowers] Permissions detected. Now using permissions.​
    2011-07-13 04:27:58 [INFO] [HeroicDeath] enabled.​
    2011-07-13 04:27:58 [INFO] [iConomy] Logging is currently disabled.​
    2011-07-13 04:27:58 [INFO] [iConomy] v5.01 (Eruanna) loaded.​
    2011-07-13 04:27:58 [INFO] [iConomy] Developed by: [Nijikokun]​
    2011-07-13 04:27:58 [INFO] [iConomy] hooked into Permissions.​
    2011-07-13 04:27:58 [INFO] IntelliDoors version 1.1.6 was initialized.​
    2011-07-13 04:27:58 [INFO] [Jail] Loaded 1 jail zones.​
    2011-07-13 04:27:58 [INFO] [Jail] Loaded 0 prisoners.​
    2011-07-13 04:27:58 [INFO] [Jail] Loaded 2 cells.​
    2011-07-13 04:27:58 [INFO] [LazyRoad] : Version 0.4.3 is enabled!​
    2011-07-13 04:27:59 [INFO] [NearestSpawn] Successfully linked with Permissions.​
    2011-07-13 04:27:59 [INFO] MiningTNT version 0.4 is enabled!​
    2011-07-13 04:27:59 [INFO] SimpleSave: Parts of config file are blank, but not null. Possible errors might happen.​
    2011-07-13 04:27:59 [INFO] SimpleSave: DON'T! Post this 'warning' on the thread.​
    2011-07-13 04:27:59 [INFO] SimpleSave: 3.22 Initialized​
    2011-07-13 04:27:59 [INFO] Loaded message command: msg​
    2011-07-13 04:27:59 [INFO] Loaded message command: tell​
    2011-07-13 04:27:59 [INFO] Loaded message command: pm​
    2011-07-13 04:27:59 [INFO] Loaded message command: reply​
    2011-07-13 04:27:59 [INFO] Loaded message command: r​
    2011-07-13 04:27:59 [INFO] WatchPM 0.1 loaded.​
    2011-07-13 04:27:59 [INFO] WorldEdit 4.6 enabled.​
    2011-07-13 04:27:59 [INFO] WorldEdit: Permissions plugin detected! Using Permissions plugin for permissions.​
    2011-07-13 04:27:59 [INFO] WorldGuard: Permissions plugin detected! Using Permissions plugin for permissions.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server) Single session is enforced.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server) TNT ignition is PERMITTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server) Lighters are PERMITTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server) Lava fire is blocked.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server) Fire spread is UNRESTRICTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: Loaded configuration for world 'Minecraft Server"​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server_nether) Single session is enforced.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server_nether) TNT ignition is PERMITTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server_nether) Lighters are PERMITTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server_nether) Lava fire is blocked.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Minecraft Server_nether) Fire spread is UNRESTRICTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: Loaded configuration for world 'Minecraft Server_nether"​
    2011-07-13 04:27:59 [INFO] WorldGuard: 34 regions loaded for 'Minecraft Server'​
    2011-07-13 04:27:59 [INFO] WorldGuard 5.2.2 enabled.​
    2011-07-13 04:27:59 [WARNING] [EssentialsProtect] WorldGuard was detected, in the near future the following features of Protect will be disabled in favor of WorldGuard's versions​
    2011-07-13 04:27:59 [WARNING] disable water flow​
    2011-07-13 04:27:59 [WARNING] disable lava flow​
    2011-07-13 04:27:59 [WARNING] disable water bucket flow​
    2011-07-13 04:27:59 [WARNING] disable all fire spread​
    2011-07-13 04:27:59 [WARNING] disable tnt explosion​
    2011-07-13 04:27:59 [WARNING] disable creeper explosion​
    2011-07-13 04:27:59 [WARNING] disable all damage types​
    2011-07-13 04:27:59 [INFO] [XcraftGate v0.7.2] hooked into Permissions 3.1.6​
    2011-07-13 04:27:59 [INFO] [XcraftGate v0.7.2] by Engelier loaded.​
    2011-07-13 04:27:59 [INFO] [XcraftGate v0.7.2] loading world Minecraft Server_nether (NETHER)​
    2011-07-13 04:27:59 [INFO] [XcraftGate v0.7.2] loading world Skylands (SKYLANDS)​
    2011-07-13 04:27:59 [INFO] Preparing start region for level 2 (Seed: 2788563735735919105)​
    2011-07-13 04:27:59 [SEVERE] while scanning a simple key​
    in "<reader>", line 18, column 1:​
    could not found expected ':'​
    in "<reader>", line 19, column 1:​

    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.scanner.ScannerImpl.stalePossibleSimpleKeys(ScannerImpl.java:400)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:239)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:183)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:564)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:163)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:228)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:124)​
    2011-07-13 04:27:59 [SEVERE] at org.yaml.snakeyaml.Yaml.load(Yaml.java:264)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.util.config.Configuration.load(Configuration.java:82)​
    2011-07-13 04:27:59 [SEVERE] at com.nijiko.data.YamlUserStorage.performConversion(YamlUserStorage.java:35)​
    2011-07-13 04:27:59 [SEVERE] at com.nijiko.data.YamlUserStorage.<init>(YamlUserStorage.java:30)​
    2011-07-13 04:27:59 [SEVERE] at com.nijiko.data.YamlCreator.getUserStorage(YamlCreator.java:33)​
    2011-07-13 04:27:59 [SEVERE] at com.nijiko.data.StorageFactory.getUserStorage(StorageFactory.java:76)​
    2011-07-13 04:27:59 [SEVERE] at com.nijiko.permissions.ModularControl.forceLoadWorld(ModularControl.java:95)​
    2011-07-13 04:27:59 [SEVERE] at com.nijiko.permissions.ModularControl.loadWorld(ModularControl.java:86)​
    2011-07-13 04:27:59 [SEVERE] at com.nijikokun.bukkit.Permissions.PrWorldListener.onWorldLoad(PrWorldListener.java:11)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader$50.execute(JavaPluginLoader.java:591)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:321)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.craftbukkit.CraftServer.createWorld(CraftServer.java:439)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.craftbukkit.CraftServer.createWorld(CraftServer.java:371)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.craftbukkit.CraftServer.createWorld(CraftServer.java:367)​
    2011-07-13 04:27:59 [SEVERE] at de.xcraft.engelier.XcraftGate.XcraftGateWorld.load(XcraftGateWorld.java:93)​
    2011-07-13 04:27:59 [SEVERE] at de.xcraft.engelier.XcraftGate.XcraftGate.loadWorlds(XcraftGate.java:215)​
    2011-07-13 04:27:59 [SEVERE] at de.xcraft.engelier.XcraftGate.XcraftGate.onEnable(XcraftGate.java:96)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:126)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:857)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:264)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:151)​
    2011-07-13 04:27:59 [SEVERE] at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:136)​
    2011-07-13 04:27:59 [SEVERE] at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:284)​
    2011-07-13 04:27:59 [SEVERE] at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:271)​
    2011-07-13 04:27:59 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)​
    2011-07-13 04:27:59 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)​
    2011-07-13 04:27:59 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Skylands) Single session is enforced.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Skylands) TNT ignition is PERMITTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Skylands) Lighters are PERMITTED.​
    2011-07-13 04:27:59 [INFO] WorldGuard: (Skylands) Lava fire is blocked.​
    2011-07-13 04:28:00 [INFO] WorldGuard: (Skylands) Fire spread is UNRESTRICTED.​
    2011-07-13 04:28:00 [INFO] WorldGuard: Loaded configuration for world 'Skylands"​
    2011-07-13 04:28:00 [INFO] [XcraftGate v0.7.2] loading world Minecraft Server (NORMAL)​
    2011-07-13 04:28:00 [INFO] [XcraftGate v0.7.2] loaded 3 gates​
    2011-07-13 04:28:00 [INFO] [iChat] Found Permissions (v3.1.6)​
    2011-07-13 04:28:00 [INFO] iChat (v2.3.2-p3) enabled​
    2011-07-13 04:28:00 [INFO] LWC: Loaded 135 locale strings (0 overrides)​
    2011-07-13 04:28:00 [INFO] Using Permissions API​
    2011-07-13 04:28:00 [INFO] LWC: Loading SQLite​
    2011-07-13 04:28:00 [INFO] LWC: Using: Native​
    2011-07-13 04:28:00 [INFO] LWC: Precached 49 protections.​
    2011-07-13 04:28:00 [INFO] LWC: At version: 3.30-git-LWC-94b93dd42195692ed1823346544359d5917274a2-b69jnks​
    2011-07-13 04:28:00 [INFO] Done (0.401s)! For help, type "help" or "?"​
    2011-07-13 04:28:02 [INFO] [BBROTHER] Removed 0 old records because of age in 0h00m00s.​
    2011-07-13 04:28:35 [INFO] GoSox2525 [/] logged in with entity id 120 at ([Minecraft Server] -108.625, 64.0, -41.28125)​
    2011-07-13 04:28:35 [INFO] SimpleSave: Current save interval is 10 minute(s)​
    2011-07-13 04:28:35 [INFO] SimpleSave: Current backup interval is 60 minute(s)​
    2011-07-13 04:28:35 [INFO] player join, heres var s 1​
    2011-07-13 04:28:43 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'shop' in plugin DynamicMarket v0.6.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:37)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:129)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:298)
    at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:711)
    at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:676)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:669)
    at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:84)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Caused by: java.lang.NullPointerException
    at com.gmail.haloinverse.DynamicMarket.ItemClump.getName(ItemClump.java:102)
    at com.gmail.haloinverse.DynamicMarket.MarketItem.getName(MarketItem.java:465)
    at com.gmail.haloinverse.DynamicMarket.DatabaseMarket.add(DatabaseMarket.java:194)
    at com.gmail.haloinverse.DynamicMarket.DatabaseMarket.inhaleFromCSV(DatabaseMarket.java:680)
    at com.gmail.haloinverse.DynamicMarket.iListen.parseCommand(iListen.java:965)
    at com.gmail.haloinverse.DynamicMarket.DynamicMarket.onCommand(DynamicMarket.java:183)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
    ... 12 more
    2011-07-13 04:28:57 [INFO] [BBROTHER] Building `ownership` table...​

    and this doesnt have to do with your plugin, but i cant figure out whats causing this problem either
    Show Spoiler

    2011-07-13 04:27:59 [SEVERE] while scanning a simple key​
    in "<reader>", line 18, column 1:​
    could not found expected ':'​
    in "<reader>", line 19, column 1:​

    I think its messing up LWC. Thanks for any help.
  24. Offline


    okay but i am still curious about sale tax...if i set the sale price, does it have any bearing?
  25. Offline


    The sales tax affects how much the shop will buy the item for as opposed to sell the item for. For example, if your buy price is $10, and your sales tax is 50%, the sell price will be $5. If your buy price then fluctuates up to $12, the sell price will then be 50% of 12, $6.
  26. Offline


    please respond i really want to use this
  27. Offline


    Could you post the contents of the CSV file you are trying to import?

    @Joy here is a 0.6.2 release, it'll generate options for requiring an empty hand to buy/sell when you run it.
  28. Offline


    Yes, how would i post that?
  29. Great plugin, however it doesn't seem to be creating the DynamicMarket.settings file for me.

    There's no errors on startup and it creates all of the other files just fine, but not the .settings file :(
  30. Offline


    An Dynamic Market update. Wicked.
    Thanks GG!
  31. Great thanks!

    Got another (small) issue. We have for example Bread in shop per 64. I think this worked before btw, but now people can't buy Bread anymore, as it tries to fill 64 inventory slots instead of in a single stack.

    Did you change anything there, is it fixable?

Share This Page