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

    Obsidian is a minecart-stopper in MinecartMania, so you need to either a) power the obsidian block, or b) change the default 'minecart stopper' block to be not obsidian.

    And it needs to be powered on both sides.
     
  3. Offline

    MasterMeNL

    Ah I see, I think you should put this in the OP (unless I suck and it's already there) since more people might have this problem.
    Thanks for your very fast reply.

    Greetings,
    MasterMe.
     
  4. Offline

    akrieger

    Others have, but it was mentioned fairly early in the thread. Now that the thread has grown I'll make a note to put it up there.
     
  5. Offline

    slang103

    First off, I love the simplicity of this plugin. I just installed it for the first time and while I can move through portals, I am having a bunch of problems:
    1) Portal loop... Like has already been mentioned I keep getting sucked back in
    2) Portal loop causing me to move into a world the portal shouldn't have sent me
    3) Portals have not been respecting their former destinations prior to installing the plugin (is this normal??) I'd rather not have to remake all the portals destinations in our worlds.

    Bukkit 1.7.2
    Nethrar downloaded fresh today
    (other plugins include: World Edit, Essentials, Craftbook and Banana Portal, all of which are fresh updates as of yesterday)

    Its a smaller server just for me and 4 other friends.
     
  6. Offline

    akrieger

    1) I'm riding the bukkit dudes as hard as I can to get them to put back the movement checks.
    2) Try setting allow-nether=false in server.properties.
    3) Yes, this is to be expected. Notchian portal destination choosing mechanics were terrible and unpredictable, and not much better than 'random'. With Nethrar, you can exactly calculate where your portal will end up and link to*.

    Glad you like Nethrar! I'm working really hard on 1), and changing the allow-nether setting to false should fix 2. What do you mean, by the way, about 'move into a world the portal shouldn't have sent me'? Is it a totally new random world? Describe your world setup and what specifically happened.

    *Going from a smaller world to a larger world involves some fuzziness, but it's still better than what Notch's version did.

    Ok, best thing I can say is - ***Turn off default Nether when using Nethrar*** You can do this by editing the server.properties file, and changing the line that says "allow-nether=true" to "allow-nether=false" If the line doesn't exist, add it at the end saying "allow-nether=false". If you still experience teleport looping, come back to me. This is, hopefully, just a temporary fix.

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

    slang103

    Thank you for the quick response. I figured out the wrong world issue (#2), it was on my end and just conveniently looked related so no worries there.

    I'll try turning off default nether when I get the chance.

    May I suggest in a future version to allow the notch default portal destination choosing to remain? For anyone who already has many placed portals and have learned how to make the default placement fit their needs with infrastructure already built around it, changing it can be a greater burden than help.I should also ask why when I step through a portal from our overworld, it sends me to the same portal in the nether world as notch's system does but when I step back into the nether portal it recreates a new portal in the over world. It seems odd that it only creates the extra portal one way.
     
  8. Offline

    akrieger

    That might not be possible given the current APIs... I'll look into it though. Plus, the primary reason people choose Nethrar, or at least that I intended people to choose Nethrar over Notch Nether, is that Notch's portal placement algorithms were just unusable :p
     
  9. Offline

    slang103

    I can see how that would be a major focus. The primary need I had was simply to be able to move minecarts through portals for faster legit-ish transport.
     
  10. Offline

    akrieger

    Yeah sorry :( Did turning off default Nether help? Rigby and I have been working on this since last night, and I think we've figured it out. Some wonkiness with Nethrar's teleporting means you're not quite getting teleported out of the portal on the destination side and it's causing badness to occur. I'll look into it more this weekend, fix hopefully by Monday.
     
  11. Offline

    7eggert

    a) Is it possible to test for allow-nether=true and to spam the user in that case?

    b) Feature request: I'd like to link each normal world foo (and possibly it's sky foo_sky) to it's own nether foo_nether (like it's automatically done with the default world), having the default scale of x8. Would it be possible to add a feature to do this automatically so I don't have to edit/reload if I /mvcreate a world using MultiVerse.
     
  12. Offline

    akrieger

    a) The amount of extra code I'd have to write is not worth it given the amount of times it would fail, because the failure mode is so... hard to pin down. I'm still not exactly sure what is happening, whether it is something client side, server side, or an interaction between the two.
    b) I'll put it on my todo list to have as an option. Keyblocks are first though. Describe to me exactly how a sky world would link up? Would it be foo -> foo_nether, and foo_sky -> foo_nether, or foo_sky -> foo_sky_nether?
     
  13. Offline

    iFearz

    With Notch's Nether I had a problem that if someone died in the Nether and then respawned they still got all their stuff and if they went back to the Nether their stuff was there as well, so you could duplicate with using the /kill command in front of the portal and then go back and pick it up again...

    So my question is: Does this happen with Nethrar as well? Because if it does I better not use it since my users probably will start duplicating again if it's possible...
     
  14. Offline

    akrieger

    That sounds like a strange interaction with dying and one of your other plugins. I haven't observed it in my testing, no one else has reported it, so my suggesting is "try it" and if it happens, come back and tell me what other plugins you're using, so that I can look into it.
     
  15. Offline

    iFearz

    Ooh lol, sorry I think I know what it is... I'll test it and let you know or it was the plugin's fault.

    Edit:
    I tested it and it works now, thanks! :D
    Your plugin is btw much better than Notch's. ;D
     
  16. Offline

    woodzy

    is this file right? any please help some i have dubble tping
     

    Attached Files:

  17. Offline

    akrieger

    That seems fine. Are you having problems? Can you describe them?
     
  18. Offline

    7eggert

    I don't think a sky would have it's own nether, and unless there is a default way to mimic, I would not implement the sky part yet.
     
  19. Offline

    IncendiaDrakon

    I have one request, I think others would agree. If you aren't all ready working on it, I'd like to request that you add a delay for teleporting. For example, I used to use the plugin "Nether" and they eventually added a feature in which you'd have to stand in a portal for about five seconds. You'd also get a message along the lines of "You feel the pull of nether energies" and then you're teleported. This would be insanely useful, because at this point anyone who even touches a portal is instantly teleported. D:
     
  20. Offline

    akrieger

    Tell your users to walk more carefully :p I've added it to my 'potential future development' list, along with the other requests. No ETA.
     
  21. Offline

    IncendiaDrakon

    Haha. I liked having portals given decorative rooms, one user has a portal as a doorway. That's not the real reason I asked for this though. Also, I figure you should be able to enable/disable this, since it could interfere with vehicles passing though portals. One way to do this would to try and have it fire a teleport instantly for vehicles, but a delay for players standing in it.
     
  22. Offline

    Ratchet

    getting users that end up dying in an endless void after going through nether portals, anyone else have this?
     
  23. Offline

    rj89

    Any clue when keystones will be implemented?
     
  24. Offline

    akrieger

    I promise I will make a best-effort attempt to start them tomorrow. Work, as it turns out, is long and tiring, and when I get home after being at the office for 10 hours one of the last things I think to do is code :/
     
  25. Offline

    Mr_Fj

    Hey, I had an idea... How about adding an (optional) glowstone portal, like in the aether mod? So you can have these connections:
    World2 could be nether and world3 could be skyworld... or something else entirely :)

    World1 >OBSID> World2
    World1 >GLOW> World3

    World2 >OBSID> World1
    World2 >GLOW> World3

    World3 >OBSID> World2
    World3 >GLOW> World1

    That would be very useful, but I understand if it's too hard to code :)

    And thanks for making this awesome mod :)
     
  26. Offline

    rj89

    No worries. I simply made the mistake of telling my users about it. Now they won't shut up.
     
  27. Offline

    akrieger

    This is actually what rj89 was asking about. Basically, instead of the whole portal being made out of glowstone or whatever, you can bind a block type to each world. Then, when you make a portal, you fill in the useless corner with a block of that type, and that decides what world it goes to.
    Sorry :( Unfortunately, work has to come first. When I do work on Nethrar, though, this is the first thing I am doing. The only issue is that it takes me a couple solid hours to be productive, but I can't find a contiguous block of a few hours anywhere. I don't have anything planned for this weekend, though, so I might get lucky.
     
  28. Offline

    cj89898

    i used to be able to tp but i added another world and now i can't tp

    nevermind i had to put a space between the worlds

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

    OrtwinS

    A configurable transport would be welcome, my transports go so fast I usually end up being transported back and forth a dozen time before I manage to step out in the intended world.
    nvm, I should read the 'known issues' thing more careful :p


    PS how is the 'keyblock' development going?
     
  30. Offline

    akrieger

    Less quickly than I'd like, given that I've now come down with some strange throat yuck and am feeling tired all the time. I might have mono, which would really suck. It's even more frustrating because I know exactly how to make the changes, and they aren't even "big", but to actually do the process correctly (eg. prevent duplication of rare resources, prevent trivially breaking portals) I have to do a heck of a lot of other code which is less fun and I am less certain how to do :/
     
  31. Offline

    OrtwinS

    Ow, get well soon!
    I know exactly what you mean, I have the same with my redstone experiments, knowing exactly how to do something very cool, but the project keeps dragging because other boring/vital/difficult systems need to be done first....

    I dont mind waiting, thanks for the confirmation its still on!
     

Share This Page