UltraTrader
Remember the donate button works, I could use some fresh Mt. Dew (I also except BitCoin (address below)
Information
Links | Description |
---|---|
Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk. | |
Jenkins | Development Downloads on CI provided by CloudBees |
GitHub | Source Code is hosted by GitHub.com by DemgelOpenSource group |
Website | WebSite is hosted by Github using maven-site |
Donate BitCoin | 17U5koSrxqYphGTSN4nZsd1sDr7Ti96XW4 |
Donating FUN | Some fun options for donating if you don't have money but want to help |
Citizens Wiki | My Wiki entry on Citizens 2 website |
Most Documentation will be on the Website
at http://ultratrader.thedemgel.com
Installation |
Commands | Permissions | Create A Trader | Localization | Configuration | Setting Shop Limits
UltraTrader and Citizens
UltraTrader doesn't require Citizens to run. But it does come ready to integrate out of the box, and most extensions do currently require the use of citizens. UltraTrader will work with Citizens to create NPC traders, but if you don't want to use Citizens, you can easily make blocks/signs into shops.
Buying and Selling
Some notes on buying and selling:
- Owners will always receive items from their shop for free (FREE)
- Owners can never sell items to their own shop. Items placed into a Traders buy screen will just be returned.
External Plugins
As a way to extend Ultratraders without bloating the already sizable amount of code required any farther, I have started to create external plugins that extend UltraTrader. Some of these can be found on the Jenkins Site, but we aware that these are not bukkit tested yet, and may be full of bugs.
Working Extensions (not flawlessly yet)
- UltraRental - Create Rental NPCs
- UltraDenizen - Allows UltraTrader to work with Denizens
- UltraWorldGuard
- Adds some requirements that can be setup by:
- using required traits in limits.yml
- adding required trait permissions "trader.limit.required.default.worldguardowner"
- currently only adds "worldguardowner" (trader must be standing a region the player owns) and "worldguardmember" (trader must be standing in a region a player is a member of)
- Currently should still work, but updates are suspended till I the new repo.
- Adds some requirements that can be setup by:
- UltraFrames
- Currently will show randomly changing items that your shop sells
- add ultraframe trait to NPC
- right click with stick to select
- place item frames and watch the magic.
- Currently will show randomly changing items that your shop sells
Compatibility Extensions
These extensions are there to extend the compatibility of UltraTraders to more specific modes beyond the normal use of UltraTraders. Some planned extensions will likely be a bridge Extension for handling Bukkit->Forge communications, as well as NBT related code that I don't want to place directly into UltraTrader.
Metrics
This plugin utilizes Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
If you wish to disable this feature (/me cries), you can do so by opt-ing out, which you can do in the config file under /plugins/PluginMetrics/
Some Videos
If anyone wants to create a video demonstrating the use of UltraTrader, please PM me, thanks. I will be creating more as time goes on, but removed the out dated material for now
TODO
- command to allow Ops to not always get items for free from all stores
- Currently I have removed OPs completely from the free sell list (OPs no longer get free items, or shouldn't)
- Players can use the "/traderplayer toggleop" command to toggle paying at their own shop (for test purposes)
- Item to allow click to see shop information
- The command is there (/trader info) but it does nothing yet due to forced update
- adding aliases: "/trader" -> "/ut" - "/traderplayer" -> "/utp" - "/traderadmin" -> "/uta"
- removing logging from ultratrader and using a extension plugin, to hopefully invite some members to add pull requests to add logging features.
Thanks
- dayron1313 - Github issues
- Chriszh - for being persistant ;)
@Artaelz
adding aliases: "/trader" -> "/ut" - "/traderplayer" -> "/utp" - "/traderadmin" -> "/uta"
its in the notes above, and should be working in 1.1, possibly 1.0, but honestly can't remember what build I added the aliases. (1.1 is on Jenkins) if they don't work, let me know and I will fix it. It is in the todo, so most likely in 1.1.
@tronman2020
I am the same author as Cititrader, someone else took over cititrader2, this was supposed to be a rewrite with conversions at one point, but no longer will convert from cititrader to ultratrader. It is a replacement, as it should be a better shop plugin in general.
is this a replacement for cititraders2 and does it work with Econxp? I can't seem to get my merchants to buy player heads on cititraders2 :/
Still /trader command... MyRPG uses that command so please could change it or at least make an alias?
When ever I try to use UltraTrader the command points to myRPG
I have a new build that is coming, soon to be uploaded to Bukkit, I am aware at how long these updates are taking and am truly sorry, coding is still going slow for me but I am working on it:
Debating if I should remove logging from UltraTrader and use an external plugin (extension) or just leave it in... let me know what you think.
@TerraNetworkOrg
First Issue: If an owner sells to his own shop, he will get the money, which should come out of the traders wallet (if shop wallet) or his personal wallet (player wallet), so thus he should only be getting his own money back, something he could do if he went into the trader admin and did a withdrawal on the trader wallet.
If the player is allowed to own a trader with an admin wallet, then this is also excepted behavour as it should be a server shop and not really owned by players.
If this is something different please let me know.
Second issue: This should be something on my todo list anyways, and will be added as soon as I can sit long enough to concentrate on coding before my leg explodes. Darn thing just will not get better, and I find it hard to write on pain meds.
Hey tenowg, really great plugin!
We mentioned one problem: the shop-owner can sell items to his own shop (he gets the money)
Idea: Could you implement the feature, that you can set a price for an item amount? Sell 16 Cobblestone for 1 Coin, so 16 is the minimum amount (16,32,64)
Okay, ill test the plugin one of these days, this week, and give some feedback. :)
@Chriszh
antoniobenedetti seems to have an error I can't track down, but other than that I haven't seen any new problems. I believe that his is a rare case that I am going to have to track down the hard way. As no one else has been able to make it happen (or haven't reported it), even me locally.
How is it going with the plugin? Havent been around for some time, been busy lately. Does the latest Jenkin build need some testing?, or is it stable?
I have the following plugins installed: WorldBorder, PlgDisableCmd, NoCheatPlus, WorldEdit, ZNounce, GiftHeads, Vault, AntiBotUltra, PermissionsEx, HealthBar, TerrainControl, Pl3xMOTD, LWC, LWCTweaks, WorldGuard, RemoteToolkitPlugin, CapsBlock, SaveIT, SurvivalGames, Sign Casino Slots, Sign Casino Blackjack, AntiXRay, RideThaMob, ClearLag, ProtocolLib, Essentials, QuickShop, Citizens2, EssentialsSpawn, UltraTrader, DisquiseCraft, EssentialsChat
It is still not working with v1.1 installed:
[19:57:55 WARN]: [UltraTrader] Task #97 for UltraTrader v1.1 generated an exception java.lang.NullPointerException
at com.thedemgel.ultratrader.conversation.addsellitem.AddItemBeginPrompt.getNextPrompt(AddItemBeginPrompt.java:28) [?:?] at org.bukkit.conversations.MessagePrompt.acceptInput(MessagePrompt.java:32) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at org.bukkit.conversations.Conversation.outputNextPrompt(Conversation.java:286) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at org.bukkit.craftbukkit.v1_7_R1.conversations.ConversationTracker.beginConversation(ConversationTracker.java:20) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer.beginConversation(CraftPlayer.java:979) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at org.bukkit.conversations.Conversation.begin(Conversation.java:186) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at com.thedemgel.ultratrader.ShopListener$2.run(ShopListener.java:182) [?:?] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java:53) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:587) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-36-g9f75167-b3005jnks]
@Dopplizzle
Done, read down one post, will upload to Bukkit by friday after a few more small changes
Jenkins now contains a build that:
Look for version UltraTrader 1.1
@xXRoboJackXx
Oh yea, for now until I get this fixed, you can use the permissions system to get around the need of the defaults section in the config.yml.
In this case assign trader.limits.maxshops.5 would allow people to have 5 shops, used with groups you can give different amounts ot everyone.
Check out http://ultratrader.thedemgel.com/UltraTrader/permission.html#Limits
@Dopplizzle
Thanks for reminding me, I had not put this in due to the updates with 1.7.2 and I didn't want to have to rewrite it when it changed, needless to say I forgot to revisit this area and will add this in the next version.
@xXRoboJackXx
I do plan to put in a reload, in a way, the plan is to eventually have the config setup in-game without the need to open up the config.yml file.
By the end of the week I will have a new version that will be fixing some of the issues, such as configs.
Seem like this plugin is going good places! ...one quick question, the current right-click-to-setup-a-store item is described as "paper by default." I assume this is changeable in the config.yml, but there is no mention of the key to do so. Any insight to changing it would be great (right-click-with-paper conflicts with another plugin for me) Thanks, and keep up the great work...
Edit: Well, It looks like paper is hardcoded in the source, so I'd like like to alter this question to a feature request. :D Maybe make it alterable? Thanks again...
@tenowg
I did stop the server to try it, since there is no /ultratrader reload option.
@xXRoboJackXx
I will check to see if I made a mistake in how the config is loaded, it is possible that it is saving at a bad time. I haven't done any changes to it since this project started so it is likely that it is confused somewhere. Try stopping the server, make the change in the .yml, then starting the server cold.
I might not have removed the save on close that I had in originally, as I didn't implement ingame setup yet, which will make the point moot. I did rush some what to release due to my injury.
@antoniobenedetti
What other plugins are you running? I have examined the code, re-compiled, downloaded, and retested locally 100 times. I know "what" is happening, but I can't figure out why. The best I can come up with atm is that something else is using the inventory close event and setting the InventoryView to null before my plugin is done using it.
Why it is happening: Line 28 is where it looks for the Shopid in use, which is part of the ShopInventoryView which implements InventoryView.
My Reasoning for saying *possibly* another plugin:
So I would ask if anyone else is having this issue, so I can nail down exactly where it is happening (this version is running on over 50 servers currently, it has to have happened to someone else)
Bug report:
Not sure if this has anything to do with the server, but I tried to fix this so many times, Basically I can't change max shops, I tried to change it to 100 but that didn't work, it basically keeps getting overwritten back to 1 or not changing at all.