Inactive [TP/MECH] Nethrar v2.3.1 - No-command minecart supporting Nether / multiworld portals [1.3.1]

Discussion in 'Inactive/Unsupported Plugins' started by akrieger, Apr 1, 2011.

  1. Offline

    akrieger

    Nethrar - Unrestrictive Nether / multiworld portals, with ridden and riderless minecart and boat support, and many options for the power server admin.

    Version: v2.3.1 (Dev v2.3.2a)

    Nethrar is a Nether portal implementation that aims for simplicity and as unrestricted usage as possible. Portals are created and used almost exactly like in SSP. Build a portal, light it on fire, and go! No commands, no required Permissions, and nothing else meta-gamey to use. Spatial compression is implemented, with configuration settings allowing varying ratios, even a Nether which is larger than the Normal world it is attached to! Portal pairs are automatically created, and even saved between reloads.
    Nitty gritty details (open)
    A somewhat conservative heuristic is used to link portals in the smaller world to portals in the larger world (the Nether is the 'smaller' world, usually), to avoid portal spamming the larger world. Additionally, portals will never destroy a pre-existing portal; rather, they will simply link to that portal.
    Stepping into a portal in one world will first try to find a portal to link to in the destination world, then build a new one if none is found. The tl;dr version of this search is "Is there a portal in the destination world, that, if newly created and stepped into, would link to this portal in this world?" If so, link to that portal, otherwise build a new one. What determines whether a portal in one world links to one in the destination world? Essentially, if the hypothetical 'perfectly positioned' counterpart, in the destination world, to the first world's portal would conflict / intersect with an existing portal in the destination world, then the already-present portal is chosen as the destination. Note that this overall strategy is to prevent creating portals unless absolutely necessary, but can make generating distinct unique portal pairs in close proximity difficult.
    If you really want to know what the name comes from, you can ask, but it's really not important.

    Features:
    • Drop-and-go: defaults provide full, basic SSP-like functionality for most servers. Just drop the .jar file into your plugins directory. Nethrar should now be able to guess most parameters, but if there is any doubt, check the generated worlds.yml file. **Current bug: due to changes in the way configurations work, the default worlds.yml file is no longer generated. This will get fixed in the next release.**
    • Total multiworld support. Whatever arbitrary world configurations you wanted, now you can have them.
    • Portals 'remember' their destination, so world loops are possible. For example, if I have it set up that portals from world A go to world B, and portals in world B go to world C, and then finally portals in C go to A, what would happen if I build a portal in A, which leads to B, and then step back through it? I will go back to A, not to C. This 'memory' is preserved with clean server shutdowns.
    • Facing, orientation, and when applicable velocity, are preserved going through the portal, for the smoothest transition possible for players.
    • Minecarts carrying players function seamlessly. Minecart tracks should lead to and from the portal on both sides, on the same elevation, for minecarts to work properly.
    • Minecarts can now go through portals riderless! Powered minecarts are not supported, but empty minecarts and storage carts both go in and out unassisted. For best results, use with the force-chunk-loading feature.
    • Boats can be driven through portals too! If you are linking between two water worlds, or a water and normal world, you can now paddle through between the two.
    • Chunk keep-alive: For servers strapped on disk IO, or lower-performance servers, teleporting can be a real bummer for everyone on the server. Nethrar can be configured to keep chunks loaded in a radius around portals, increasing RAM usage, but decreasing the amount of resulting lag from teleporting through portals.
    • World blocks: Each world can have a 'world block' assigned to it, like wool or a gold block or stone. If you create a portal with a particular world's world blocks in the top two corners, then that portal will link to that particular world. This lets you make permanent 'special' portals that go places regular ones won't.
    • Custom world generator support for any world.
    • Configurable settings include:
      • whether to use permissions or not.
      • whether to redirect respawns or not.
      • how many chunks around a portal to keep loaded.
      • whether to allow riderless vehicles.
      • how much debug logging to print (currently there is very little even at the most verbose setting, this is more for helping me with debugging).
    • It works.
    **** Important Note: You should turn off the default Nether functionality if you are going to use Nethrar. Failing to do so can cause random and unpredictable double teleports, teleport loops, or worse. Set "allow-nether=false" in server.properties, or add it at the end. This will notdelete your existing Nether, it will just prevent the portals from teleporting you if you stand too close for too long. ****

    Download Nethrar (.jar, config, worlds) (.tar.gz, .zip)
    Dev build: (.jar). Changes: see my post.

    Source (github) (LGPL licensed)

    Configuration / Installation, most people: Download Nethrar.jar. Put it in your plugins/ directory. For most people, this is enough.

    Configuration / Installation, fewer people: If you had trouble with worlds not being what you expect, or if you want more power, then do the following. The plugin will put a config.yml inside a directory called "Nethrar" in the plugins/ directory. Set the following parameters in config.yml for your particular server. Also, edit worlds.yml to describe the world setup YOU want for your server. Assign the relevant Permissions nodes as you see fit.
    config.yml (open)
    Code:
    # Set to true to use Permissions, otherwise everyone gets
    # all permissions.
    usePermissions: false
    # Set to false to use builtin vanilla respawning behavior.
    listen:
        respawn: true
    # Set to some number > 0 if you experience server-wide lag
    # when anyone teleports.
    forceLoadRadius: 0
    # Set to true to allow minecarts / boats to pass through a
    # portal without a Player passenger.
    riderlessVehicles: false
    # Set to 1 or 2 to increase the amount of console messages
    # Nethrar will show.
    debugLevel: 0
    
    worlds.yml (open)
    Code:
    world:
            environment: normal
            destination: world_nether
            scale: 8
    world_nether:
    # Note that the environment field is *required*
            environment: nether
            destination: world
            scale: 1
            peaceful: false
            respawnTo: world
    # Add more worlds here, or edit the ones above as you see fit.
    # For example, to make a loop of normal -> Nether -> SkylandsPlus -> first normal, do the following:
    # world:
    #        environment: normal
    #        destination: world_nether
    #        scale: 8
    #        worldBlock: 57
    #        ^ Any portal made with diamond blocks in the corners will link to 'world'.
    # world_nether:
    #        environment: nether
    #        destination: world_skylands
    #        scale: 1
    #        peaceful: false
    #        worldBlock: 42
    #        ^ Any portal made with iron blocks in the corners will link to 'world_nether'
    # world_skylands:
    #        environment: normal
    #      worldGenerator:
    #              name: SkylandsPlus
    #              args: if there were any args to pass to your world generator, they would go here
    #        destination: world
    #        scale: 8
    #        worldBlock: 41
    #        ^ Any portal made with gold blocks in the corners will link to the 'world_skylands'
    # Note that to make a SkylandsPlus world, you'll first need the SkylandsPlus mod, which you can get [URL='http://dev.bukkit.org/server-mods/skylandsplus/']here[/URL].
    Permissions (open)
    Code:
    # Allows usage of Nethrar portals.
    nethrar.use
    # Allows usage of Nethrar teleportation.
    nethrar.tp
    Commands (open)
    Code:
    # Teleports the invoking player to the destination world.
    # Places a single block of glass at the destination under the feet.
    /nethrar tp world 
    Not issues:
    • "I'm using MinecartMania and when I go through a portal I don't keep moving!" Obsidian is the default "minecart stopper" block in MinecartMania. Either power the obsidian block on both sides of the portal with redstone, or change the stopper block to be something other than obsidian.
    • Transitioning between worlds can be a little laggy. I am trying to mitigate this, the Bukkit devs and community are making great progress making teleports suck less, but there is nothing we know of that we haven't done to make things better. Sorry.
    • "Help I fall and sometimes die when I teleport between worlds!" Best thing I can say is: make sure you're running an up-to-date build of CraftBukkit, and it's lag-related, but it's nothing I believe I can solve any more than I have already tried.
    • "Why didn't I respawn at my bed?" Recent versions of CB should fix this, and Nethrar will support this soon as well even with respawn redirects.
    • "Help I am always respawning in the default world." Unless you are using Nethrar respawn redirects to keep people who die in one world to respawn in the same world, this is working as the Bukkit devs seem to want it to work.
    Known issues:
    • Chunks can sometimes, but less commonly with newer (860+) builds of CB, fail to load when transitioning between worlds, and only load on relog. Portals can also stop functioning when this occurs. Set "forceLoadRadius" in config.yml to something greater than 0 (reports say that 4 tends to work, I would recommend something between 2 and 4).
    • Camera orientation is not preserved when travelling through a portal in a minecart. I suspect some deeper issue with the server when putting a player into a minecart.
    Potential future development (open)

    • Pre-emptively generate or load chunks in the Nether which are 'known to be needed.'
    • Allow minecarts with any passengers to teleport between worlds. Works best with force-loaded chunks to enable physics with no players present.
    • Enable teleportation of *any* entity - animals, mobs, mobiles, etc.
    • Auto-link / generate nether for new normal worlds, as option.
    • Teleport delay. Obviously incompatible with vehicles.
    • Per-world End support., if possible.
    A note about future development: This is a side project first and foremost. Development was primarily driven by my and my friend's needs on our personal server, and future development will be heavily influenced by that. If there is sufficient demand by the general public and users, then I can implement other features, but I am not compelled or otherwise forced to do so. Just FYI.
    Changelog:
    Version 2.3.1:
    • 1.2.4-R1.0 support.
    • No major changes besides updating to remove deprecated API usage.
    Version 2.3:
    • 1.1-R3 API support.
    • Added support for custom world generators. Environment is still required, add key values worldGenerator.name to specify a world generator plugin, worldGenerator.args for additional args for the generator.
    Older changes (open)
    Version 2.2.1:
    • Removed 'physics!' spam.
    Version 2.2:
    • 1.0.1-R1 support.
    • Added support for teleporting to The End. Set the target world's enviroment to 'the_end' or the equivalent. Portals might not be able to be reignited once in The End, so beware!
    • Misc fixes and logging.
    Version 2.1:
    • Implemented world blocks. World can have an optional "worldBlock" property, an integer, defining a block ID for that world's "worldBlock." Any portal made with that block in the top two corners will link to that world.
    • Updated to use Bukkit builtin permissions. You must use a compatible permissions plugin to use this. Read http://forums.bukkit.org/threads/permissions-faq.25080/ for more information.
    • Still uses sync threads to do teleportation.
    Version 2.0:
    • Added easier drop-and-go installation code and support.
    • Added true multiworld support. See worlds.yml for syntax and examples.
    • Added per-world custom destination world.
    • Added per-world custom destination world for respawns.
    • Added command "/nethrar tp world"; Use it as a server admin to get between worlds to set up portals for people.
    • Added portal destination persistence to help with more complicated world setups.
    Version 1.5.1:
    • Fixed teleporting when riding a minecart so that everything happens in a thread, instead of half in a thread and half synchronously (it's not okay to be a passenger of a vehicle in another world, eh?).
    Version 1.5:
    • Fixed "moved too fast" issue causing disconnects. Unfortunate side effect: teleports exhibit just a wee bit of lag before actuall occuring once you hit a portal. Depends on the server's load at the time. This will have to wait for if/when the Bukkit team fixes the checks around that disconnect.
    • Riderless minecart teleportation! Hidden Netherworld logic, long-distance unassisted storage cart teleportation, possibilities abound! Supposedly will work great with Evercart.
    • Boats! Now you can enable your crazy multiworld water coaster. Not tested as thoroughly as it should have been, buyer beware...
    • Various refactoring to help prepare for Nethrar v2.0.
    Version 1.4:
    • Added option for it to always be night in the Nether (default true).
    • Changed Permissions support to default to false, change to true if you want to use Permissions.
    • Added chunk loading prior to teleporting through portals, to help alleviate more transition issues.
    • Nethrar now generates a config file if one is not found.
    • Added some checking around where Nethrar determines which block a player has interacted with, due to people reporting a situation where a player can be "in a vehicle" but either the vehicle, or it's location, are null. This will help prevent NPEs.
    Version 1.3:
    • Added configuration option to enable a 'peaceful' Nether, empty of Ghasts and Pig zombies.
    • Switched to using a more polite chunk unloading function.
    Version 1.2:
    • Added configuration option to keep chunks loaded in a variable sized radius around portals. Set "forceLoadRadius" in config.yml to > 0 if you are having issues with falling or with chunks not loading after transitioning.
    • Added "NethrarMinecartTeleportEvent" which is called after a player is teleported with a minecart. Plugin devs, listen for this event if your plugin does things with minecarts, and needs to know when minecarts suddenly move or get added/deleted.
    Version 1.1:
    • Added Permissions support for permission node "nethrar.use" - give users this permission to enable use of Nethrar.
    Version 1.0:
    • First release, with minecarts and conservative portal linking and configurable spatial compression, etc.



    If you like this, and you use Bitcoins, and you feel like being generous, send some my way at 1Lwcw5awgpHyrhpWd4qc3dKPaDHpttm1Vh . It doesn't have to be more than 0.001 BTC, I'm very much a penny BitCoiner, but the thought is appreciated :)
     
    iWeirdo, Lizardbones, woodzy and 6 others like this.
  2. Offline

    akrieger

    That is precisely what I mean, unless you are referring to somewhere else where I talk about lagging and falling.
     
  3. Offline

    Pjstaab

    Quick question on your chunk loading fix for bukkit, I could just try it out but does it make it load close chunks before it starts loading far chunks? It almost makes sense for me to be able to see the rest of the world but still not have nearby chunks loaded.

    Tried it out and chunks definitely appear to load better.
     
  4. Offline

    akrieger

    My 'fix' doesn't do anything explicitly like that. There are two steps involved when teleporting someone: set their new spatial coordinates, and put them in the right world. The old way would put them in the right world first, then move them to a new position. The problem with this is that chunks tend to be loaded at the fringe of your view, because normally you move at a walking speed. If you teleport, then chunks will first load from far away then closer, resulting in the freaky bouncing / falling & jerking sensation. So, my fix reorders things. First, it teleports you spatially, resulting in a different position in the same world. After that, it puts you in the right world. However, Notch's built-in world-teleporting (used to go from the normal world to the nether) loads chunks starting with your chunk and then around you, expanding out. No jerking jumpy lag!
     
  5. Offline

    Pjstaab

    Well it works much better it seems like. Thanks for figuring it out.
     
  6. Offline

    Ratchet

    when this is done, will it be possible to have a single Nether for two separate normal worlds?
    if so, what would happen if you create a portal inside that nether, where would it take you?
    I assume for auto-generated portals they would just take you back to the "origin" world.
     
  7. Offline

    akrieger

    Building a portal in that nether would take you to one of the two worlds. You'd have to build the portal in the other two worlds to go into the nether. This is one of the tricky bits, and why it is taking so long.
    I'm considering doing a "key" like system, where you replace the corner blocks of the portal with colored wool, or any other configurable material, and each world is tied to one of these blocks. That way you can define where a portal goes by the corner piece, or, if you omit them, then the portal goes to a default destination. Thoughts?
     
    xorvious likes this.
  8. Offline

    Lunar Delta

    People on my server are having a hell of a time (haw!) using portals. Upon stepping inside one, they are constantly bounced around and flung back and forth between the nether and the real world, unable to escape the portal.

    For the record, Notch Nether is disabled.
     
  9. Offline

    akrieger

    Make sure you are using at least build 819, and if you are using 818, that you don't have space compression set to 1:1.
     
  10. Offline

    Ratchet

    sounds good to me! looking forward to it. players on my servers PVP map want nether access! hehe

    Edit: quick question, can nether portals appear in the world and destroy chests? A player just had the side of his destroyed by an invading portal and it got me worried that it might happen to someones chests filled with diamonds or something one day.
     
  11. Offline

    EniGmA1987

    I dont know if this has been asked in the last pages, and I know you are trying to make this as simple as possible, but I was wondering if you could add a quick check to the plugin when using the permissions support for a line such as "nethrar.create" where any groups of players who do not have this permission for them set, will be unable to create working portals in Minecraft. This way, only server OP/admins can create real, working portals between worlds. Everyone else just has to use the admin created portals.
     
  12. Offline

    Sorken

    @akrieger
    CB833 + Nethrar 1.5.1 + MV 1.7.2 seems to work very well.

    Nethrar have nether control since it handles linking portals properly. With builtin or MV that wont work well at all with several portals in nether all linking to the same one in normal (please dont change Nethrar way!). I was also pleased to see that Ghast fireballs are now visible too.. perhaps because multiplayer added support for it?
     
  13. Offline

    akrieger

    Yeah, portals will only ignore obsidian or other portals. The dangers of playing with portals? I can probably implement an 'exception list' so that SAs can list things which will not be destroyed.
    This is harder to detect that you might think, since the vanilla minecraft server handles the portal creation. I can look into this, BLOCK_IGNITE event is probably what I want to check out. I'll get back to you on it.
    Good to know! I don't plan to change the Nethrar approach any time soon, it is what sets it apart.

    Also wtf I didn't get notifications for any of these posts.
     
  14. Offline

    EniGmA1987

    Maybe do a check for if the block_ignite event is done on an obsidian block, then only allow the event if a player has the proper permission. I dont know much about coding so maybe Im way off, but just an idea.
     
  15. Offline

    akrieger

    That is what I'm thinking, but knowing how other events have progressed, cancelling it just might not work. I'll check it out at some point.
     
  16. Offline

    Incendia

    Is this instant teleportation or is there a wait time like vanilla portals? (I'm just looking for something that fixes the portal location problems, I still want the wait time)
     
  17. Offline

    akrieger

    Currently it is instant teleportation. I plan to add wait time support once I see how well the new portal events work out.
     
    Bacu likes this.
  18. Offline

    Sean5861

    Thank you for the plugin
     
  19. Offline

    akrieger

    For the curious, I just pushed a major changing commit to the GitHub source in preparation for Nethrar v2.0, just so you guys don't have to keep doubting that I'm doing anything :p It's nearly there, I just have to implement portal persistence between server reboots, and also additional permissions for portal generation, and I'll say "ok 2.0 is done." 2.1 will possibly include the "key by colored wool / whatever block" feature, but I think for now having each world point to another is good enough.

    Edit: v2.0 will involve a configuration file change, which I think is acceptable given it's going from a v1 to a v2.

    You are very welcome! :)
     
  20. Offline

    Pjstaab

    :D Waiting on PhoenixTerrainMod and this. My friends are getting ornery waiting for me to start are server back up. They are just gonna hafta wait.
     
  21. Offline

    Bacu

    I was about to ask about that when I saw the new event in the release notes. Keep up the good work.
     
  22. Offline

    Gimmic

    Can you seperate out the options for no spawning?

    Example: I'd love to disable Ghasts, but leave pigmen enabled.
     
  23. Offline

    akrieger

    There are plugins which handle this better than Nethrar ever will. Try SpawnControl or the like. The only reason I added the spawn control was because it was a one-line fix.
    I may add finer grained controls in the future, but it is unlikely.
     
  24. Offline

    Holotropein

    (Apologies if the following has been answered before, I haven't been keeping up with this thread.)

    Now that Minecraft 1.6 supports Nether portals natively, is there any reason to still use Nethrar (other than the saner portal linking algo)? Perhaps it would be useful to have a comparison between "Notch Nether" vs. Nethrar in the plugin description.
     
  25. Offline

    akrieger

    It all depends on what you want. If you literally just wanted a Nether connection and nothing else, feel free to use Notch's Nether. If you want more, use Nethrar or something else. I'll make al ist here and repost it in the main topic, that's a good idea.
    Notch's Nether:
    • Poor / fuzzy / weird portal matching and generation mechanics.
    • Multisecond delay for teleport
    • No minecart support, ridden or otherwise.
    • Won't ever teleport creatures and mobiles (things you throw), probably.
    • Only goes to the Nether and back.
    • In general is a pain in the butt.
    Nethrar:
    • Precise portal matching and generation mechanics (step 16* squares in the real world, make a portal, makes a new one in the Nether).
    • Nearly instantaneous teleport (I realize this is a preference).
    • Ridden and unridden minecart teleportation support.
    • Will probably someday teleport creatures and mobiles (things you throw).
    • Has awesome multiworld features coming soon!
    • Has lots of configurable options, and smart defaults for zero-config goodness.
    • In general is less a pain in the butt.
     
  26. Offline

    Ratchet

    looking forward to 2.0! ;-;
     
  27. Offline

    Mr_Fj

    I have a problem, even though I am OP and can build in spawn, in the normal world, I can't build in the nether :/ Also, is there a way to change the spawn protection to be less in the nether, than it is in overworld?
     
  28. Offline

    akrieger

    You should check to make sure that you copied your Permissions file, if you are using it, correctly to the new world. If not, I have no idea what the problem might be. Are there any errors appearing in your console / log?

    You can change the overall size of the spawn protection, but I don't think you can do that on a per-world basis. Edit server.properties, there is / should be a value called "spawn-protection=xx" where xx is some number. Smaller number = less spawn protection, I think.
     
  29. Offline

    MikeC2103

    I'm liking how this plugin works quite a bit. However every once in a while i'll get some server lag and it seems that the original notch nether portals take over for a moment.

    cb 860

    Since I have the ratio different this leads to players creating new portals outside the map borders I have set.

    Do you think that changing the server.properties allow-nether=true to false will correct this problem? Or will that cause issues with nethrar?

    or am I missing something else?
     
  30. Offline

    akrieger

    Switching allow-nether to false should solve the problem, yes. At the very least, you should stop having problems with Notch nether portal generation occuring. Make sure that doesn't accidentally overwrite your world file, but Nethrar should have no problem with that. If it does, let me know and we can work through it.
     
  31. Offline

    BurnseyBoi

    By this do you mean that it will be possible to link "world" to "nether", and "world2" to "nether2" so that each has a separate nether and there is no crossover?
     

Share This Page