[ECON] NPCTrader v1.1.4 - The Full featured localized shop system [RB740 - 766]

Discussion in 'Inactive/Unsupported Plugins' started by MatCat, Feb 13, 2011.

  1. Offline

    MatCat

    NPC Trader - The Full featured localized shop system

    Version 1.1.4 (Testing Version!)



    The first localized full featured shop system for Bukkit/iConomy, in NPC Form!

    What's better for a localized shop system then your very own NPC Clerk / Teller / Worker / Slave / Whatever word you want to call your NPC!

    Features
    • Localized system
    • Fully player controlled (No admin intervention needed)
    • Full Item and Metadata support (Colored wools, etc)
    • Item name or ID recognition
    • Partial name recognition (If online)
    • Complete internal permissions system for managers of the NPC
    • iConomy Based
    • MySQL data storage
    • Item stocking system
    • In-Game help for everything
    • Supports Permissions and GroupManager (Using FakePermissions) Plugins!
    Installation / Setup

    1. Put NPCTrader.jar in your plugins folder
    2. Put mysql-connector-java-bin.jar in your main minecraft folder
    3. Restart your server (Auto-generates config.yml in plugins/NPCTrader/)
    4. Edit the config.yml for MySQL and other config settings.
    5. Restart once more
    6. Enjoy!
    If for some reason the folder / config does not auto-generate, then you can open the .jar file with 7zip or winzip or other archiving utility that supports jars and extract the config.yml from the jar.


    NOTE: If you do not have or do not know if you have MySQL setup then you either have to setup MySQL or not use this plugin for now. Please do not post questions asking how to install MySQL as that is outside of the scope of this post. You can follow this tutorial (Thanks @Germata!) for detailed windows installation and setup, but I cannot provide support for installing and setting up MySQL, only support for my plugin specifically.

    Permissions

    Permissions will only be used if it is installed. The following is the permissions list:

    Code:
    npc.admin      - Give to admins for full access to all NPCs
    npc.admin.list - Access to /npc list npcs
    npc.user.*     - General user commands, you can specify by replacing * with command name, I.E. buy
    npc.manager.*  - NPC Manager commands
    npc.owner.*    - NPC Owner commands
    npc.create     - Ability to create an NPC 
    If permissions is used you may also specify limits on how many NPCs a specific player or group may have ownership flag on, please see config file for more information.

    Usage

    Once the plugin is installed and running, you can see the in-game help by typing /npc in your chat window. To interact with an NPC just right click on it first.

    Here is a simple tutorial for setting up an NPC named Bob that sell's bread, cooked fish, and cooked pork, and buys wheat, raw fish, and raw pork.

    1. Stand exactly where you want your NPC, including head position and body rotation.
    2. Type: /npc create Bob 6 10 This will create the NPC with 6 Item Slots, each holding 10 units.
    3. Right click on the newly created NPC
    4. Type: /npc setup 1 bread 1 2 0 true false This will setup Slot 1 with Bread, selling lots of 1 at 2 Coins, buying them from players at 0, True for NPC Selling it, False for buying from players.
    5. Repeat step 4 for Cooked fish and Pork
    6. Type: /npc setup 4 wheat 64 0 10 false true This will setup Slot 4 with Wheat, buying lots of 64 at 10 Coins. This one is set False to selling it to players, but true to buy from players.
    7. Type: /npc stock 1 20 This will stock the NPC with 20 breads on slot 1 (Assuming you have enough bread).
    8. Repeat step 7 for raw fish and pork.
    You know have a fully setup and functioning NPC.


    Known Issues / Bugs

    • Config folder does not get generated on Linux - Works on Windows
    • Cookies and beds, and pretty much any other 1.4/1.5 items.
    • Spams console when you stand close to an NPC
    • Gives error when an NPC is spawned (Can be ignored)
    • Head / Rotation is not being properly set on spawn / move. (Fixed in 1.14)
    • Does not work with actual permissions (works with GroupManager)
    • Rename command is broken
    Things Todo

    • Re-write item handling
    • Support for both GroupManager and Permissions
    • iConomy 5 Support
    • Add armor capacity
    • Tie into WorldGuard for checking for build rights (Will be optional)
    Misc


    If you installed MySQL for Windows just to run this plugin then check out this link to see how to create the initial minecraft database you will need.


    *** NOTE: SQLite IS NEVER GONNA HAPPEN! If you want to see an alternative, fork the src, make it work as an option, and I will include it in.***

    Changelog
    • Version 1.1.4
      • Changed out item name / id handling system
      • Now supports all current official items
      • Fixed Move Bug
      • Fixed NPC Creation Errors
      • Fixed a few other errors
      • Fixed Config creation on linux (hopefully!)
    • Version 1.1.3
      • Completely rewrote most of the code that directly interfaces with the NPC Library.
      • Now uses chunk loading/unloading to make sure only NPC's in loaded chunks are loaded (Way more efficient)
      • Changed banker command to only allow setting yourself as banker (to stop an exploit situation).
    • Version 1.1.2
      • Fixed upgrading stack counts for free bug
      • Fixed rename command not working on linux
      • Made it so an NPC must have 1 item slot to be created
      • Added permissions support for owned npc limits (By group or player)
    • Version 1.1.1
      • Fixed issues with quantities of '0'
      • Added rename command
      • Fixed iConomy hooking on startup
    • Version 1.1.0
      • Fixed Admin Override Permissions not working
      • Added Half and Double Slabs
      • Updated to work with B612+
    • Version 1.0.9
      • Updated to work on B531+
      • Updated to work with iConomy 4.*
      • Much needed overhaul of error handling and disabling procedures.
      • Converted integer based money to decimal based.
    • Version 1.0.8
      • Updated for newer builds
    • Version 1.0.7
      • Fixed more issues with ItemData, hopefully they are fixed for good.
      • Added log names
      • Added Coal/Charcoal distinction
      • Order of slots listed will always be in ascending order
    • Version 1.0.6
      • More meta-data issues, resolved.
    • Version 1.0.5
      • My restructuring of the code to try to support SQlite completely foobared the connect and close code, causing timeouts and errors. Fixed it.
    • Version 1.0.3
      • Fixed buy/sell/stock/unstock to use absolute values so that negatives cannot happen.
    • Version 1.0.2
      • Fixed bug where db connection was closed on /npc create
    • Version 1.0.1
      • Fixed bug with null Item Datas
    • Version 1.0.0
      • Fixed many many bugs
      • Added /npc list npcs as an admin command to let you see a full list of NPCs
      • Added recording transactions.
      • Added full permissions support
      • Better error handling and message delivery.
    • Version 0.94
      • Fixed not checking stock when doing /npc setup
      • Made the setup's error messages way more intuitive
    • Version 0.93
      • Fixed disappearing NPC bug.
    • Version 0.92
      • Fixed bug where selling was not checking player inventory.
    • Version 0.91
      • Fixed bug where giving improper arguments for upgrading and creating reported iConomy and NPC Trader out of sync.
    • Version 0.9
      • Initial Release
    You can download the jar here.



    You can download the mysql connector jar here.
     
  2. Offline

    Phantom Index

    I think the effect will also apply to SQLite, but as for setting it up. Yes, it's difficult.
     
  3. Offline

    Brack

    sudo apt-get install mysql

    done and done
     
  4. Offline

    QQCucumber

    I've set it up before, it's not as simple as you make it sound, there are big security risks to using the root user, and properly setting up the permissions took quite a bit more research than I thought it would. Furthermore, I ended up running into an issue for even this simple task that I had to ask a MySQL expert to fix because one of the tables got messed up.

    It's not trivial.
     
  5. Offline

    jdrez

    Getting this error upon startup:

    I've got MySQL running and the config.yml points to the correct database on the correct port. Can anyone help me?

    Thanks.
     
  6. Offline

    QQCucumber

    One of my plugins uses SQLite and the memory consumption isn't even in the same ballpark.
    --- merged: Feb 14, 2011 6:23 AM ---
    I'd also like to point out that there are three different commands in Linux's MySQL for adding a user and only one of them is considered the right way to do it. Have fun figuring out which one that is based on google searches.
     
  7. Well SQLite sounds nice then. I'll trust you QQCucumber and place my vote towards SQLite support.
     
  8. Offline

    MatCat

    The key to everyone getting the errors posted is not properly setting up the DB config and or you do not have the mysql connector located in the same folder as the craftbukkit.jar.

    As far as sqlite goes I am having extreme trouble getting it to work properly, it's giving me errors on simple sql update statements and I cannot figure out why.
     
  9. Offline

    Phantom Index

    So show me what you have set as 'Database:' ( I don't need to see password or database user)
     
  10. Offline

    jdrez

     
  11. Offline

    MatCat

    jdrez the first line of the error says: Fatal Error on DBConnectjava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    That means you do not have the mysql connector jar in the same folder as the craftbukkit.jar
    You need to download and put that there. I will post a link in the OP to it in a second.
     
    jdrez likes this.
  12. Offline

    jdrez

    Huge help. Thanks!
     
  13. Offline

    MatCat

    I updated the instructions and put d/l link for the connector.
     
  14. Offline

    inkwriter

    it'd be great if there was a physical distance check so that players wouldn't be able to buy items from anywhere. Also some permissions as to who could create the NPCs and unlimited item stocks would make this plugin even more amazing!
     
  15. Offline

    TheBoganlge

    needs perms
     
  16. Offline

    MIKUiqnw0

    Internal permissions is all fine and dandy, but why isn't there any controls for admins to tap into besides the brief configuration and DML? Clearly NPC placement in unwanted areas wasn't a very simple oversight, was it?
     
  17. Offline

    Charles Harvey

    So on my server people are able to sell items to the shop even if they dont' have the stock in their inventory. Any idea what I am missing? End up with people have 30k and 17k in money.
     
  18. Offline

    MatCat

    That should not be possible at all as it does check inventory... Just checked and your right it is doing that! Dunno how that happened but I am going to fix immediately.
     
  19. Offline

    Turbo123

    MatCat... I have been soooo impressed by sooo many plugins for Minecraft. And i honestly thought I have seen it all... I am very gratefully able to say, THANK YOU!!!

    I do have 1 small request I haven't been able to get a NPC fully up because I just found it but can there be a radius setting for people who want a shop and him in the shop/People can only buy when there in the shop? If not it's cool, I still love this plugin!!!
     
  20. Offline

    MatCat

    I'm trying to get the sell issue fixed fast as possible, however I had some stuff in the code changed around because of trying to get SQLite to work so now I am having to fix it all real quick to make the change to fix this! So hang tight for a few more minutes...
    --- merged: Feb 14, 2011 8:41 AM ---
    I am going to eventually add a radius.
     
  21. Offline

    KrisEike

    Looking forward to trying it out! =D

    Kris
     
  22. Offline

    ToitagL

    Report bug here, I have 5 NPCs, with 2 to 16 slots each, but when I change of world / get offline for to long, 4 out of 5 disappear, and I need to reload the whole server to make them reappear. And I don't know what is the difference for the one remaining.

    Thanks again for your plugin :)
     
  23. Offline

    MatCat

    Fixed sell command not checking player inventory, please re-download ASAP.
     
  24. Offline

    KrisEike

    Is it Sqlite compatible?

    Kris
     
  25. Offline

    QQCucumber

    MatCat, have you looked at other plugins that use SQLite to figure out what's going wrong?
     
  26. Offline

    ToitagL

    Figured out why NPCs disappear : chunks unload. If a player stays close to them, they keep selling and so, but if there si no one, they vanish and I have to reload the whole server. The only one not disappearint is close to the spawn, which seems to never unload.

    Could it be possible to add an option to prevent chunks unloading around the NPCs ? Memory-hungry process, but currently, I just can't leave the town (and the server) to allow my players to shop.
     
  27. Offline

    Brack

    I realize this is a long shot as player skins are handled by Notch and his server but... any chance of custom npc skins?
     
  28. Offline

    MatCat

    Yeah I came to the conclusion myself, to complicate matters the ChunkLoad event is all bugged and doesn't work properly. I am working on a solution for this right now, going to try to have it out soon. There is another plugin I don't remember what it's called but it forces selectable chunks to stay loaded.

    Right now since the NPC is a player entity it will only grab a skin if you name it something that matches a player name with a custom skin and this is because the Client gets the skin from the amazon servers where Notch has them stored, not the server.
     
  29. Offline

    Brack

    Maybe giving them armor to wear instead could differentiate them more? Again if possible and somewhat simple. [​IMG]
     
  30. Offline

    mrgreaper

    very cool mod and EXACTLY what i have been waiting for, but we dont have access to mysql, were running mineos to squeeze the most out of our ram (anyone not heard of it should lookit up its pretty good) with out sqllite support we simply cant use it :(

    so add me to the list of sqllite wanters lol
     
  31. Yeah I've seen MineOS. Looks pretty Sweet. Maybe we'll test it out at SynapseSMP.com server.
     

Share This Page