myUltraWarps
This very efficient warp plugin has so many features that your head may just implode, and with THE FEATURE MATCH GUARUNTEE, if you find a warp-related feature that this plugin doesn't have, just tell me and I'll add it to the future features list! It's that easy!
My goal is to give you a warping plugin to ensure that you never need any other warping plugin ever again. With this plugin, you can do some much more than just warp. You can customize the messages for each warp that appear when someone warps to it or tries to and doesn't have permission. I'm a perfectionist and I use this plugin on my own Minecraft server, so you can be assured that this plugin works and it works well.
The full feature, command, permissions, and future features lists are linked to this page below. They're very long, but don't be intimidated. You don't have to read all of it. :P
features
^Click me to see all the cool features myUltraWarps has to offer. Remember: you don't have to read everything. It's a long, long list. :)
commands
^Click me to see all the cool commands you can use!
permissions
^Click me to see all the permission nodes this plugin has. Note that we have myultrawarps.user and myultrawarps.admin for easy setup!
the config.txt
^Click me to get help with the config.txt. It's not as complicated as it looks!
known bugs
Though you can teleport with vehicles, you can't teleport between worlds yet. That's CraftBukkit's fault. I would love it if you could help me convince CraftBukkit to fix this stupid bug! I have not been able to find any workarounds; I have tried everything and everything else. I tried reporting the bug, but they have been persistent in ignoring me for weeks now. They even marked my first report as "resolved" when it wasn't and I had to remake it. We need to force them to listen to us! Please help by going here, making an account, and posting a comment! I would really appreciate it!
future features
^There are even more features yet to come listed here!
source code
As per some users' request, I have published the full source code for myUltraWarps on GitHub. Click the heading above to go see it and/or download it for free. If you're one of those people who hates waiting for Bukkit to approve the newest version of myUltraWarps (and I don't blame you if you are), you can download the source code that will be updated immediately with every new released version, compile it using Eclipse or some other J.D.K., and replace the stuff inside the myUltraWarps.jar with the new source code. (Remember to update the plugin.yml, too!)
other plugins
myGuardDog
- Griefers can go find a different server to grief on.
myPluginWiki
- This is like the Minecraft Bukkit developer's Library of Congress.
donations
^I run a Minecraft server myself and it costs a good amount of money each month to have it hosted, so if you love this plugin, you can click the link above and donate to show your gratitude! Every cent helps!
my server
^I know that most of you here are Bukkit server admins yourselves, so you probably won't be interested in this, but I have a server. If you're interested, I put a link to our website here. Our server is hosted by FragNet and is up 24/7. It's a basic Survival freebuild server with a few basic plugin modifications. Building is vanilla, but everyone can warp freely (using myUltraWarps). I have written almost half of the plugins on the server and we're moving toward having all the plugins written by me. There are some plugins of mine on that server that aren't even on Bukkit yet. If you feel like visiting, please do! We love new people!
comments
If you have any opinions, ideas for new features, bugs to report, or anything else, pleeeeeeeeeeeeeeeeeease post a comment below! Also, if you feel inclined to be harsh, I won't take it personally. Feel free.
Have fun ultra-warping!
I run a server with very limited bandwidth and if someone warps it need a lot's of bandwidth to transmit all the new chunks to the player so i would use the cool-down timer to prevent people to warp to many places in a short time, for example allow them only to warp once every 30 sec.
@MarioG1
Oh, and I should mention that when I add the cool down timer, though the save data will be a little different now, you can rest assured that the new update will be completely backwards-compatible with previous myUltraWarps warp and switch data. I already have a plan for that. If the warp or switch has cooldown options on it, I'm just going to add a third sentence to the save lines. Warps and switches with no cool downs will save just as they do now.
By the way, another update has come and gone and myUltraWarps v6 is still going strong. No update needed. myUltraWarps's code is mostly independent form the CraftBukkit interface. Most of the processing and such happens in myUltraWarps; it doesn't outsource it to the craftbukkit.jar. Therefore, you aren't likely in very much danger of having your myUltraWarps go out of date any time soon. In fact, I'm not sure if there's anything in this new 1.4 Minecraft update coming up that could throw myUltraWarps out of date either except that it might consider some of the new blocks solid even if they're not when you use /top. We'll see.
@MarioG1
A cooldown for warps, huh? That's already planned for switches. I wonder...if I made a cooldown timer option for both warps and switches, perhaps the switch cool downs could overrule the warp cool downs? That way you could have different switches that have different cooldown times even if they're all linked to the same warp. Okay. I'll add that to the future features list.
Out of curiosity, is there something you already plan on using a warp cooldown for? ...a shop or something?
I have an idea for another feature in V7.
You could add an cool down timer for warps :)
@REALDrummer
I would say the tool of choice for a GUI would be phpMyAdmin, however you can also just do SQL queries right inside the MySQL console as well.
It could also just be an option. You could still keep the text format and just use MySQL as an optional storage and even have a way to convert between the two.
Also, SQLite and MySQL are 2 different things as well but they often have very similar ways of querying the databases.
@ryvix
I'm sorry. I'm confused. There's a MySQL program that allows you to open and modify database files to that extent? The only program I've found so far for opening database files is SQLite Browser 3, which doesn't let me do much of anything. It won't even let me organize data alphabetically or in the case of integer data, in ascending/descending order. (On a related note, another reason I've come to hate .db: We have a hunt plugin on my server that keeps track of high scores in a .db file. When I try to post the top 10 high scores on a board, I have to do it manually and this stupid program won't even let me put the scores in ascending order or copy and paste them into Excel or anything, so I have to find the highest scores in the list myself, which gets very tedious.)
Anyway, if there's a program that would allow me to modify .db files, I would be very happy and probably consider adding a configurable option to change myUltraWarps data to a .db save file. I know you're right and that .db files are more compact and could increase performance on myUltraWarps' reading, though a change to a .db save file would only affect performance when loading and/or saving the warps file.
@REALDrummer
Well, I don't know about that. I don't think I would be screwed at all, I would just restore from a backup if something went too wrong or write an SQL query or little script to change something =)
I can understand how you spent a bunch of time converting your world name and want to stick with text files but MySQL isn't unmodifiable at all. You just don't use a text file to modify it directly, you use MySQL to modify it. You could even export the database, do your search and replace and import the database. I do this sometimes too and it isn't a problem unless the database is huge and then it tends to take me less time to just write an SQL query or a little script to deal with it.
Also, it's extremely flexible in comparison to a text file where you have to find or create an interface to query the data like you have done. In this case, at least for me, that interface wasn't properly doing what it should be doing. Therefore not only is it very likely better on performance and database size, MySQL is also more reliable.
Furthermore, one can write an SQL query to replace all the world names very easily, and very likely in less time than it would take to open the huge text file with 10s of thousands of warps in it. And I think the search and replace would also be faster using an update query on the world column when you are talking about a warps database that is forever growing.
Lastly, my reason for using it is because my problem is getting to be a large warps file which is becoming a bit more of a problem to me than a MySQL database would be if I want to do such a search and replace operation. I have used MySQL for about 15 years in web dev and sys admin so I am comfortable and experienced with it and I have been through this sort of thing before.
At any rate, I do know where you're coming from and respect your choices. It is your plugin and all and I do enjoy it and I look forward to seeing what you add next, especially those auto ignore features you were talking about =)
@ryvix
You can modify it however you want for your own use, but I will never use MySQL. Sorry. I cannot stand the fact that I can't modify any of the data in it. It's true that it's efficient, but it's not an option in my book.
I think I probably told you this story once when you first left a comment on this plugin, but NiftyWarp uses a database file like that for its warp data. However, when I transferred my server from my desktop computer to a server hosting company, I was forced to change the name of my world from "BASIS server map" to the default "world." I was trying to keep the map and all the warps with it, so I had to change the world name in the data for all the warps. I ended up having to type out the data for 230-something warps in myUltraWarps format by hand in order to keep the warp data because I couldn't change the world names. It took me three days even with the use of Ctrl+F and Ctrl+H. If I had had myUltraWarps before that, I could have simply opened up the warps.txt, used Ctrl+H, and replaced all "BASIS server map"s with "world." It would have taken three seconds instead of three days. In fact, if I had not made myUltraWarps then, there would have been no way at all to make a new database with the correct world names. All my warps would have been lost no matter what.
MySQL's unmodifiable file format is not acceptable to me. If anything unusual happens and you have myUltraWarps, you can just tweak the warps.txt and you're all set. With .txt files, you can use the magic of Ctrl+F, Ctrl+H, and other functions to fix anything weird. With .db files, if anything goes wrong or you need to make a big change, you're screwed. Period.
@REALDrummer
No worries at all. I tried to modify the code a bit in that function but I don't know if it worked or not exactly. I think it was still having weird issues.
It might be nicer to use MySQL instead of having a sentence as I am sure it would save on performance and could make this sort of thing not happen at all. I may modify it to use it some time if that's ok.
@ryvix
Sorry for the delay. So it's occasionally warping people to the wrong warps, huh? ...and sometimes it even warps them to someone else's private warp? Interesting. I'm not sure how that's possible considering that even if it were to for some reason or another decide that another person's private warp is the right one, all the permissions checks come after locateWarp() is called, which means that they wouldn't be allowed to warp there anyway.
That's rather bizarre. I've put tons of different checks in the code and that kind of error should be stopped at at least three different places in the code. I wonder how it could be getting through. I've never had that happen to anyone on my server, but I'll look into it. It sounds like you run a much bigger server than I do. That's probably why your players find so many more errors. I'll see what I can find out.
Once again, sorry for the delay.
Your locateWarp function doesn't always seem to select the proper warp for some reason or another. Sometimes people are going to the wrong warps, particularly if they have a warp of the same name as someone elses. Only in some cases the other person's warp that it warps them to is not listed and restricted which is a bit odd.
myUltraWarps still works with the newest CraftBukkit update! No need to panic or even download a new version! You're safe!
@ryvix
It checks for updates when you enable myUltraWarps right now, but there will be a command to recheck as well.
I can make a configuration for it, too. Would they really not approve it if I didn't allow it to be turned off, though? That's silly. I would really, really like it if no one turned it off, though. Oh, well. I'll make it configurable.
@REALDrummer
Oh nice work! Does it auto-update automatically then or just from a command? If it does it automatically it has to have a config option to disable it or bukkit staff will likely not accept it.
@ryvix
I think I just did something wrong in my modifications. It seems to be working now. I'll put the updated source code on GitHub. I'm not sure what I did to mess it up, but I just recopied the XML-reading section and made very, very minimal modifications. It seems to be fine now.
I know it's intended to work that way, but by integrating it thoroughly into my code, I can make commands to check the update whenever you want and it's much more efficient. By integrating it the way I did, I made every step specific to myUltraWarps, eliminating the need for it to read and obtain data from a configuration file and simplifying the code substantially. Basically, h13ix wrote the general formula and I replaced all the configurable variables with what I would have configured in the configuration file. I also made a few minor efficiency- and formatting-related modifications and renamed some of the variables. Nothing major. The same general formula is there.
@REALDrummer
That doesn't sound quite right. I noticed you added the code right into your main myUltraWarps class and it does appear to be modified quite a bit. I think all you should have to do is put the Updater.java file in with the rest of your files and change the package name or put it in it's own package. Then add an option to your config to ask if they want to auto-update or not and then call the Updater properly.
I have done this here: https://github.com/ty2u/myUltraWarps/commit/352d6542fdbd6f2b3b9c7c7898dec22b80b676d4
Tested and working.
Note that it will download the update to your configured update folder in bukkit.yml
@ryvix
Hey, ryvix, I used the updater you showed me and it worked fine at first, but then it started having errors telling me that "XML documents must start and end with the same character" or something like that that would kill my server. I just wanted to warn you before you try to use it in any of your plugins. It worked fine at first. That's the weird part.
...Come to think of it, I may have done something wrong. Actually, that's probable. I don't think I touched the part where it reads the XML document from the .rss feed because I don't know anything about XML reading, but I might have messed it up somehow. Still, be watchful. If it is an error from the source, it will give your server fatal errors.
@zebillem
Just as a minor note: the file automatically saves when it loads up to confirm any changes, so you don't have to re-save it after loading it.
Anyway, I just tried it and it worked for me. The "Yes" is supposed to disappear, though. Look for changes in the status message below the question. (It's indented slightly and it says "Right now, autosave is [on/off] for warps.") If you're just worried about the answer to your question disappearing, don't be. That's supposed to happen just so you don't have to delete your old answer. If you successfully turned on the autosave, it will say so in the line directly below the question. If the status message doesn't change, leave another comment and I'll see what I can do. It works fine for me.
Hey - still trying to get the config right. Thought I'd nailed it but no...
I'm putting: Do you want myUltraWarps to automatically save the warps file every time a change is made? Yes
In the config file. I save the file. Load it onto the server. And then save it again to check.
And it's gone.
Any ideas?
Thanks