[INACTIVE][ADMIN/TP] Wormhole X-Treme Worlds v0.4 - Multi-World Management & Protection [740/766]

Discussion in 'Inactive/Unsupported Plugins' started by alron, Apr 16, 2011.

  1. Offline


    Wormhole X-Treme Worlds - Lightweight multi-world management & protection.

    Current Version: v0.4 (RB733/740/766) ( ZIP | JAR) CHANGELOG | README
    Requires: Sun/Oracle Java 1.6.0_20+. (OpenJDK/JRE is missing the XML Libraries we depend upon)

    Remember to rename jar file to 'WormholeXTremeWorlds.jar' if downloading just the jar.

    Donate: I don't want your money. If you still feel you need to donate money, give it to the Red Cross. Really. There are people out there who need it much more than I.

    General Information:
    This is an early release for Wormhole X-Treme Worlds. Consider it extremely beta. I have tested it as much as I could. It seems stable and works as intended, though I am sure there are still bugs kicking around.

    This plugin is designed to manage multiple worlds and provide basic world and player protection functionality. In the long run there will be tight, but optional, integration between it and Wormhole X-Treme itself, as this plugin was created to scratch the multiple world management itch that Wormhole X-Treme users have brought up time and time again.

    Please be aware, improper command use on existing worlds does have the remote possibility to destroy or badly damage that world. Mostly if you set a normal world to nether.

    In it's current form this plugin can create new worlds (with or without custom seed), set the custom world spawn point, autoload worlds at server start, teleport authorized players to specified world spawn, and teleport players to current world spawn, provide world protection (fire, lava, lightning, water) and provide player protection (fire, lava, drowning, pvp, falling, and all). It uses no database and stores all its important data in XML files. The spawn point you get for normal worlds is exactly what CraftBukkit hands the plugin at world creation or load. The spawn point for generated nether worlds is found dynamically.

    Currently this plugin is able to make use of the Permissions plugin and the Help plugin (no link at current due to plugin author being inactive). When permissions is not enabled, all commands require a user to be an op.

    • Basic Multiple World Management.
    • World Specific Spawn and Setspawn capabilities.
    • Permissions support.
      • Note: Without permissions we fall back to doing isOp() checks. For every command.
    • Seed saving to world config file. If a world is loaded with WXW once, we'll have the seed saved. Also uses this seed to generate worlds if they have a WXW config but no world data on disk.
    • Basic creature spawn controls. Ability to disable hostile or neutral mobs on a world by world basis.
    • Honoring of spawn change events external to WXW.
    • The ability to use text seeds in both the 'wxw create' command as well as in the world xml config files.
      • Note: String data will be converted to long using the character integer values appended.
    • Advanced safe teleportation for spawn and go commands.
      • Note: The spawn and go commands both check if the destination blocks are safe (at, above, and below). If they aren't they either run the safe spawn finder (for nether) or the highest yAxis block finder (normal) and place the player appropriately
    • Ghasts are now considered hostile monsters, and are dealt with as such.
      • Note: Ghasts don't seem to disappear, they ghost (sometimes). But they don't move or attack the player, and are unable to be interacted with, so... kind of works?
    • Nether World safe spawn creation.
      • Note: We scan up to 19773 (9 * 13^3) blocks to find a safe spawn point. If we don't find one... sorry. It is solid rock (or lava or whatever) for you.
    • World specific player damage, fire, drowning, falling, lava, lightning and pvp protection controls.
    • World specific world fire spread, lava spread, water spread, lightning fire and lava fire protection controls.
    • Wold specific time locking controls. Three options, day, night, and none. Along with this functionality comes the ability to globally hard disable it in the config.xml.
      • Note: We don't default to any type of time locking on any world due to potential redstone circuit issues caused by time changes.
    New features/fixes in repo for v0.5:
    • On death re-spawn event catching. If you have the 'serverOptionSpawnCommand' set to true in config.xml, we now catch player respawns and send them to the exact spawn location.
      • Note: This and the '/spawn' command have been moved into their own plugin.
    • Fix to allow users to specify a negative long value for the seed. Previously it'd consider a '-seed -32493532454' as two different commands. Now it will do a number format check and decided properly if it is an arg or a command. :)
    • Weather locking on a world by world basis. None, Clear, Rain, Storm. None being the default and disabling no weather functions. Clear disables rain. Rain is well, rainy, but has no lightning. Storm is rainy with lightning.
      • Note: Currently the weather selection for the main world directly effects all worlds. This is a Craftbukkit bug, and there is nothing I can do about it.
    • Now on initial run (or run with no or empty worlds folder) we add the default loaded world as a wormhole world with default options (in a environment aware way).
    • Added more player protection options. Explosion, void, suffocation, and contact.
    • Added world protection options to disallow players starting fires and disable fire all together.
      • Note: We do not remove existing fire. Too costly to scan for.
    • World xml file option name changes (yes, we still read in the old names; the config file is regenerated at server shutdown with the new names).
    Planned Features:
    • World creation in a thread, as to not block the WXW process during generation.
    • Automated world backups. (In a thread, if possible, so it can block all it wants.). I'm doing a bit of everything else, why not add backups, right? Planned to be on a world by world basis, of course.
      • Hrm, lets back burner that feature for a while. Other things more pressing.
    • In game core plugin configuration commands. So players don't have to edit the XML file if they don't want to.
    • Full cleanup of output for commands, to be more like 'wxw info' or 'wxw modify'. Color coding, screen width formatting, and other general textual goodies.
    README (open)

    To Install:
    1. Extract WormholeXTremeWorlds.jar into your plugins/ folder.
    2. Start server.
    3. Add all existing worlds to WXW via the '/wxw create' command.
    To Upgrade:
    1. Extract updated WormholwXtremeWorlds.jar into your plugins/ folder.
    2. Start Server.

    COMMANDS (open)

    Command List with Permissions Nodes:
    • '/wxw go [world]' - Go to spawn of specified world. - wxw.admin.go
    • '/wxw list' - List all loaded and configured worlds. - wxw.admin.list
    • '/wxw remove [world]' - Remove world from configuration. - wxw.admin.remove
    • '/wxw load [world]' - Load unloaded world. - wxw.admin.load
    • '/wxw modify [args]' - Modify settings of specified world. - wxw.admin.modify
      • Required args: -name <world>
      • Optional args: -owner <player>, -daylock, -nightlock, -notimelock, -(no)autoload, -(no)lavaspread, -(no)neutrals, -(no)firespread, -(no)lavafire, -(no)hostiles, -(no)waterspread, -(no)lightningfire, -(no)lightningdamage, -(no)damage, -(no)drown, -(no)pvp, -(no)lavadamage, -(no)falldamage, -(no)firedamage
    • '/wxw info [world]' - Get info about specified world. - wxw.admin.info
    • '/wxw setspawn' - Set spawn of current world to current location. - wxw.admin.setspawn
    • '/wxw create [args]' - Create new world with specified args. - wxw.admin.create
      • Required args: -name <world>
      • Optional args: -owner <player>, -seed <num>, -nether, -noautoload, -nohostiles, -noneutrals, -nopvp, -daylock, -nightlock, -nolavaspread, -nodrown, -nofirespread, -nolavafire, -nowaterspread, -nolightningfire, -nolightningdamage, -nodamage, -nolavadamage, -nofalldamage, -nofiredamage
    • '/wxw spawn' - Go to spawn of current world. - wxw.spawn
    • '/spawn' - Go to spawn of current world. - wxw.spawn
      • Note: This command is hard disabled in config by default.

    CONFIG (open)
    Config.xml options with defaults:
    • serverOptionPermissions - Enable or disable Permissions plugin support. Default: true
    • serverOptionOpsBypassPermissions - Ops bypass Permissions plugin access checks. Default: true
    • serverOptionHelp - Enable or disable Help plugin support. Default: true
    • serverOptionSpawnCommand - Enable or disable '/spwawn' command. Does not disable '/wxw spawn'. Default: false
    • serverOptionTimelock - Option: Enable or disable timelock functionality. Default: true

    CHANGELOG (open)

    Important changes in bold.

    v0.4 2011.04.24 09:20 PST:
    • Initial sticky chunk support. We allow plugins to register chunks that do not unload. When the chunk is no longer sticky, we schedule it for unloading. We properly catch and cancel the required chunk unload events.
      • Note: This is really only useful for v0.850 of wormhole x-treme I am working on currently.
    • Added support for player protections on a world by world basis. Drowning, burning, lava swiming, lightning strikes, falling damage, and all player damage. Controlled via the wxw modify and wxw create commands.
    • Added support for world protections on a world by world basis. Fire spread, lava spread, water spread, lightning fire, and lava fire. Controlled via the wxw modify and wxw create commands.
    • Updated wxw info ... to be more useful. Colorized it. Now when called without a world, shows info on current world.
    • Updated help output for wxw modify and wxw create to be slightly more useful.
    • Fixed typo in config loader for Neutral monster disable.
    v0.3 2011.04.21 02:17 PST:
    • Added timelock. Uses scheduler. Now users can lock their worlds to day or night. Worlds default to normal time schedules.
    • Added config.xml option to disable timelock and its scheduler. Defaults to scheduler enabled.
    v0.2.1 2011.04.20 04:38 PST:
    • World specific PvP controls. True or false.
    • Updated safe spawn code for normal worlds to only use highest y if spawn is covered. This allows indoor spawn locations. Also now retain player pitch and yaw on spawn or go.
    • Updated the find safe spawn location code to be modular. Can be used for more than just finding initial spawn locations now, with small enough xyz numbers ;)
    • Used new modular safespawn in a 3^3*9 setup for finding a safe location to drop player if nether spawn location is built over. Overkill, but ...
    v0.2 - 2011.04.19 01:39 PST :
    • Nether safe spawn generation has been completed. We scan up to (13^3)9 blocks for a safe place. Only used when world is first generated.
    • Added '/spawn' command with default hard disable via config file.
    • Normal world safe spawn teleport. We'll drop the player on top of the highest block at the spawn location. If users build to the skybox at spawn, it is not our problem. Nether still has no such thing. If a player builds over where spawn is on nether worlds, players will /spawn themselves into solid rock.
    • Text seeds, you can use them. Not sure if they work the same as with vanilla... but. :)
    • Ghasts are now considered to be hostile mobs, and dealt with as they should be.
    • Squids are now considered to be neutral mobs, and dealt with as they should be.
    v0.1.2 - 2011.04.17 08:41 PST :
    • Reverted optimization in prettyLog. Apparently causes NPE problems on some setups.
    v0.1.1 - 2011.04.17 07:15 PST :
    • We now store the world seed in our world config files. The seed value is based on what the world actually uses. This allows users to add worlds and have a valid seed stored in their config for later use. When the seed is a valid seed number (non 0) we call the world load with the specific seed. This way if someone wants to reset a world, all they have to do is delete the world folder on disk before starting the server.
    • We now pay attention to external spawn change events and update our internal spawn location references as appropriate.
    • We now properly honor the creature spawn restriction options. We clear banned types of creatures at world load as well as any time a world is connected. We also cancel creature spawn events as needed.
    • Minor performance change to our internal prettyLog method. Check to make sure system log even is appropriate for the log type we are generating.
    • Changed connect command to load. Kept connect as alias for compatibility.
    • Fixed a few NPE when trying to teleport to a world that is not loaded.
    • Info command now shows world seed.
    v0.1 - 2011.04.16 06:48 PST :
    • Initial plugin release.

    World Management Examples (open)

    In this example, the world name is 'world' and the player name is 'player'.

    To add an existing normal world set to auto load at start with time locked to day:
    • /wxw create -name world -owner player -daylock
    To add an existing nether world set to not autoload at start with time locked to night:
    • /wxw create -name world -owner player -nether -noautoload -nightlock
    To create a new normal world with custom seed.
    • /wxw create -name world -owner player -seed 5677344492879191995
    To remove a world configuration from disk. Note: actual world will not be deleted from disk.
    • /wxw remove world
    To modify an existing worlds owner and set it to autoload, disable PvP, and disable Hostile monsters.
    • /wxw modify -name world -owner player -autoload -nopvp -nohostiles
    To connect/load a world set to not autoload at server start.
    • /wxw load world
    To teleport to spawn of managed world.
    • /wxw go world
    To teleport to spawn of current managed world.
    • /wxw spawn
    To set the spawn of current managed world to current location.
    • /wxw setspawn

    Github Repo: Wormhole X-Treme Worlds
    Release RSS Feed: Wormhole-X-Treme-Worlds.rss
    Dev: alron
    cj89898, Mijoja, Xaostica and 3 others like this.
  2. Offline


    Cool deal, I think you can probably handle it using the onPlayerJoin and onPlayerRespawn and just teleport them to the set spawn, if its not defined then just let them go to the bukkit world spawn.
  3. Offline


    Well, I just learned that lightning causes fires. Guess this means its time for me to start adding the world protection functionality.


    Also was informed of a bug in the allow/disallow neutrals setting... not sticking past server restarts. I ummm, fixed this in my current v0.4 build, and am going to push it out as soon as I finish a few of these world protection features.
  4. Offline


    Is it possible to make a world that only generates certain biome types? For example, to make a world that is all desert, or a world that is all snow?
  5. Offline


    I haven't looked into it before, but something tells me not yet. I think that requires some new craftbukkit code, but I'll check when I have the time.

    v0.4 is up. Only works on Minecraft 1.5 based CraftBukkit (Build 714 is what I tested on).

    Now we have basic world and player protection functionality. :)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  6. Offline


    Hello :)

    On /reload of the server, this error occurs. I have not tried to use the plugin yet. Just letting you know this comes up.

    CB b714


  7. Offline


    Ummm, yah. Delete your 'plugins/WormholeXTremeWorlds/config.xml' file and try that with a full shutdown and startup. I've never tried to use /reload to update the plugin (or install). I only tested to make sure it handled a /reload fine for... reloading purposes. :)

    I'll have to add more error handling into my xml parser. Something for v0.4.1, it seems.


    New install of the plugin with a /reload doesn't give me that error. (config file deleted before doing this whole thing). What OS are you running your server on, and what plugin (and its version) are you using to do the /reload.

    So, any bugs or issues with 0.4, that are not parser related?
    Or any missing features that you think belong in this mod?

    I'm nearing the end of my planned core features, and getting close to the time to polish and optimize.
    Just checking to see if I missed anything. :)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  8. Offline


    Not sure if this is an bukkit-issue or not, but I noticed the following:

    Yesterday I wanted to create a second map on my server. Since I had a nice on in single player, I figured that I would just upload that one and use a plugin to insert it into bukkit. Thus I downloaded wxw (because I use WormholeX too), started it and inserted my map via the "wxw create"-command.
    Everything worked fine, but I noticed that the grass-color of the map was wrong... it is a large snow-area, which had a dark green in single player, but now it has a light green? Is this because of bukkit, or went something wrong with wxw? Also tried a weather-command (via commandbook) and there was only rain in that area, but it did regenerate snow... not sure if this is related or snowfall just isn't integrated into bukkit yet.

    Also, how do you create new worlds using negative seeds? "-seed -123" would give me an error, since it doesn't recognize the -123 as argument for the seed, and if I write it in "" (like "-seed "-123" ") I get an exception in the console (numberformatexception, i think...).

    Anyways, thanks for this lightweight-plugin, especially the "nohostiles"-command is great :)
    Could you add an option for regaining health, like in peaceful-mode? Or did I overlook this one?
  9. Offline


    Not terribly sure, I've never tested with single player worlds. I tested with a bunch of existing test worlds I have, as well as some hundred generated test worlds (while I as working on the safe spawn generator).

    Ooo, good catch. I'll have to work out something to make the seed value work properly with a '-'. I didn't even think about neg seeds when I was writing the command.

    Glad you like it.
    As for the regen, I think it is possible, but I don't personally plan to use it. I use mcMMO for my hp regen, as it is dynamically based off of the mcMMO player stats. :)
    Anyways, I'll look into seeing what it'll take to add a heal tick on a world by world basis.

    Fixed the -seed issue. v0.4.1 will allow the use of seeds with - values.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 13, 2016
  10. Offline


    @alron Thank you :)

    As soon as v0.4.1 is out, I'll try to generate my SP-world by using wxw and its seed (which is negative)... hopefully the grass-tiles will be colored according to their biome then.
  11. Offline


    A quick question: what if there is a wormhole in a world that is not autoloaded? Is it loaded by the Wormhole plugin or this one overrides the behavior (would really prefer the second option due to what I already wrote in Wormhole thread)?
  12. Offline


    OMG I am in heaven... lol. Thank you for adding that feature, so much! It will definitely help my server. Oh, I wanted to ask. The last thing my server needs is linking between my normal vanilla world with its nether world counterpart. I would like to have single-player-like portal support, being able to configure which worlds are linked to which world, like so...

    Nethorai is the nether world for vanilla, and gargamel is the normal world for vanilla.

    /wxw modify|create -name gargamel -owner Drakonas -portal Nether

    Now every time someone makes a default Notch portal in gargamel, they will be taken to Nether, and vice-versa.

    Right now, I am using Wormholes between worlds, so it's no rush, but this would deepen the multiplayer feel if you could add this. I hope you're up to it. I know it's possible. Look at MultiVerse's config, or Essentials. Sadly, they only support linking 1 normal and 1 nether world together. I also have beefed-up mod normal and nether worlds that I'd like connected. Being only able to make one connection kills my mood, man... lol. I would greatly appreciate it if you could add this sometime along the way.

    And thanks again! It feels great to be heard.
  13. Offline


    Fast development I love it!

    Few things. Has optional arg: -owner <player> been implemented?
    Not sure how this would be used, I have 5 worlds and I want all players to drop into specific worlds on a player-by-player basis upon connecting. Or at the least have them drop into a world called "Public" till I move them where they need to be. ( how to set "Public" as default world for unknown players?)

    When starting fresh two maps are generated for my server: "world" and "nether" This is fine with me but both of these names can not be altered to uppercase "World" and "Nether" and set commands like /wxw setspawn or retain arguments such as -autoload and -daylock
    I tried renaming the map file, the world\name.XML and changing the name of the world inside the .XML for the specific world then restarting the server. It's a small thing but it took me a while to realize what was going on.
    Currently calling those worlds "Hell & Test"

    I'm trying to test out the commands as I set them up so I may have more feedback. At the moment I'm looking for an addition or implementation of controlling what world people default to on a first connect. After that their UserData in Essentials can take over.

    I also can't get /spawn or /setspawn to work for each world. I'm using essentials and I know it has compatibility issues with everything, so I've tried enable and disable in the config.XML for WXW then server resets and still only the /wxw commands are working.

    Is this a Typo? /spwawn Perhaps that's causing me some confusion.
    <!--Option: Enable or disable '/spwawn' command. Does not disable '/wxw spawn'. Default: false (disabled)-->
    it's in the config.xml and also in your spoiler for config.
  14. Offline



    Just did some further testing (for example starting my server with the new map as default map and then accessing my old map via wxw) and it seems as if data for grass tiles is carried over from your starting world (in server.properties) to every other map.
    Example: You have a standard-map, that has a snow biome at x=0 and z = 0 with dark green grasstiles. Another map you access may have a rainforest-biome at (0,0) but will get dark green tiles.
    It even seems to affect snow/rain. After changing my standard-map to the snow-world, it began to snow after using "/weather stormy" (commandbook). When it was just another map accessed by wxw, it rained (but regenerated snow nevertheless...). Such strange behavior may also occur in a desert, where no rain is supposed to fall.... but I didn't test this one yet.

    Is this something, that may be caused or at least corrected by your plugin or is it related to the way bukkit handles multiple maps and can't be changed? It's somewhat annoying, at least the rain/snow-issue

    On a side-note, do you set compasses to the new spawn-points after changing maps? My compass started pointing at a empty spot in my main world (about 400m away from my actual spawn and nothing in its range that could have caused this... like a stargate). Not sure if this is caused by wxw, though....

    Hopefully I can help you a bit with my feedback

    Edit: Weather seems to be global for all worlds, allthough the syntax of /weather from commandbook suggests, that it should be on a world by world basis (exactly like time is stored per world). Bukkit-issue?
  15. Offline


    Well, seeing as all the events just went into bukkit for weather, I'm going to start adding the weather control options now.
  16. Offline


    Loving this using bukkit 733... haven't made any portals yet but having seed control on new worlds as well as integrated world settings made my day.
  17. Offline


    i have just started using this and generated my first new world (second if you count the original server world) and i want to enable all the fun stuff like fire tnt and pvp but it seems essentials is blocking those things in the new world so i'm not sure if there is a way you can work around that or not but i thought i'd at leaste mention it so that if you can then, well, there you go

    also i plan to ask the essentials team if they might do multiworld support for those things so here's to hopeing

    btw the reason it's on in essentials is because my normal world is a creative survival and i want peoples work to be safe from griefers while in the second one it's more of a grief as you are and kill where you go kind of world
  18. Offline


    Hey! Im running CraftBukkit 733 on FreeBSD 8.2 and when I start it I get the following:
    I can load the existing world and create a new one and change world with /wxw go, but nothing gets saved so I have to do it everytime I restart the server.
    Then, when I stop the server i get this:
    I tried disabling all the plugins I use but no dice. Any suggestions to what might be wrong?
  19. Offline


    try deleting your config.xml and starting the server again.

    What version of java are you running?
  20. Offline


    I still get the same error after deleting config.xml

    I'm running:
    java version "1.6.0_07"
    Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
    Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)
  21. @alron...

    best world plugin EVER!

  22. Offline


    I aim to please.
    Next version is going to have a whole host of extra player and world protection options.
  23. theres already a boat load of options!!!
    how the hell are you going to think of MORE to add?

    i think alron, u need to do some other plugins too :)
    ur style is good :) and u update FAST!

    just thought... is it possible to edit gravity & run speed?
  24. Offline


    There is a bunch of stuff I'm not actively protecting from. I'm going to make options for pretty much everything... Though this means I'm going to have to rework the configuration commands. But that is fine, they are ugly and could use some attention.

    Total java programming experience/time in the past decade. 5 months. ^^

    Looks like the code is in bukkit to set the movement velocity of a player, I'll have to test it at some point and see if it is safe to use.
    As for gravity, I don't think so, but I could be wrong.
  25. more the movement speed really...

    moon jumping was just a silly thought :)
  26. Offline


    I don't think it's your plugin, but I have a question you may be able to answer, I run my server on my personal pc, the same machine I play minecraft on. When I create a new world and teleport between worlds the chunk I spawn on is always gone, and it takes forever to load, I usually have to walk away from it before that happens. I doesn't seem to do it when I play on my laptop with my server running on my desktop, or vise versa. So Im assuming it has something to do with playing on the same machine the server is on. Do you have any idea what may cause this, and if so do you have a solution. I've run multiple world before and hadnt had a problem, but since the 1.5_02 updates its giving me trouble. Please help if you can
  27. Offline


    okay well i figured out the whole protection thing between this and essentials all i had to do was point WXW to my main world so that it would protect it instead of essentials now the only problem is i have found that fire and lava fire spread is still on even though i turned it off with this mod
  28. alron..

    strange question.. but any idea why when i make a new world.. i get floaty shit around the place? not attached to anything.

    is this just me or do other people get this too?
  29. Offline

    Psycho Robot

    I had floaty shit once. It turns out the problem was too much fat in my diet.
  30. Offline


    Hey, I read the main post and most of the thread, and it doesn't mention separate inventories for the different worlds.
    To be specific, I'm planning to have a Creative World, Survival World and a Nether for the survival world. Obviously I don't want people smuggling items from creative, however the whole point of the Nether word is to gather resources for survival (just like in singleplayer)

    Is this at all possible?
    If not, can you implement it?
    Or should I just wait for Notch to fix the Nether XD
  31. Offline


    there is a mod called multiinv that handles separating inventories from separate worlds although idk if you can configure it so that they can take stuff from one to another while not allowing taking them to the third

Share This Page