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

    Yep! Or you could link world to nether to nether2 to world2 to world, or world to nether, world2 to nether2, and then nether to nether2, but not back out, or any crazy graph like that! Results may vary.
     
  3. Amazing! I have been hunting and waiting for a feature like this for a while now. Eagerly looking forward to this :D
     
  4. Offline

    Ratchet

    my pvp world players are begging for a nether! ;-;
     
  5. Offline

    akrieger

  6. Offline

    Ratchet

  7. Works amazingly! Thanks!

    I have a conflict with the AncientGates plugin though. It loads before Nethrar on server start-up, and because I have a fixed gate going from world to world_nether, it loads world_nether. But it loads it as a normal world, and then Nethrar complains because it is expecting a nether environment.
     
  8. Offline

    akrieger

    Either a) AncientGates is broken and needs to be fixed, or b) You need to tell Nethrar to expect a Normal instead of a Nether environment. Best thing I can say is, changed the name of the AncientGates jarfile to something like zAncientGates, so that it is 'forced' to load after Nethrar (it loads in alphabetical order), or open up the jarfile and edit the plugin.yml in AncientGates to list Nethrar as a dependency.
     
  9. I tried both of those methods, and Nethrar just overrides AncientGates completely. Guess I need to find a new gate plugin!
    Thanks for your great plugin :) it does exactly what I've wanted for ages!
     
  10. Offline

    akrieger

    Hm, that is very strange. Nethrar shouldn't be IDing world_nether as normal, unless AncientGates made it a Normal world intentionally. What do you mean 'overrides'? Can you pastebin the logfile and your config files exactly?
     
  11. AncientGates doesn't have any options to define which worlds are which types. It simply sees that there is a gate going to world_nether, and loads the world. By default it loads a normal environment. Nethrar is configured to see it as a nether world, which is what it is, so it complains because a world by that name has already been loaded as a normal.

    If I load Nethrar before AncientGates, the above problem goes away completely. But because AncientGates uses purple portal blocks, when you step into a portal Nethrar jumps in first and teleports you to the world that is set in its config files.
    Code:
    World graph:
    world --> world_nether
    world_nether --> world
    world2 --> world2_nether
    world2_nether --> world2
    From world, AncientGates wants to go to world2. But Nethrar gets in there first and you end up in world_nether!
     
  12. Offline

    akrieger

    Ok, I see what you mean. I'll fix the problem with Nethrar taking over and teleporting to the wrong world, give me a second. Also, once the worlds are generated, AncientGates shouldn't be changing the types.

    Ok download and try it again. Make sure your AncientGates gate isn't the same shape as a regular Nethrar/Nether gate (make it 3x3 or something).

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

    OrtwinS

    @akrieger

    Hi there! I've been using Nethrar with great satisfaction for months now.

    I wonder how the key aspects of this new multiworld support will be implemented in 2.0.

    config
    So, more then one alternative word, probably with a config file stating the name and the type of world (normal/nether(/sky)).
    Let us take for example: World (normal), Nether (nether), Creative (normal), CreativeNether (nether).
    I want all my players to play in the World, be albe to make gates to the Nether whenever they want (just like now), and I want to add a creative world.

    inventories
    Can we (optionally) force seperated inventories? Same inventorie for World & Nether, but another one for Creative. Everyone will get spawn ability or some sort of unlimited block access in the creative world and I dont want people smuggeling in iron & diamonds.

    gates
    Now how will my users build these gates to different worlds? using a different material? Or placing a sign on the gate with the alternative world name? (no sign = default, to be set in config file).

    world pairing
    Will there be configurable default world pairs? Like a normal gate build in World will always lead to Nether, and vice versa. While a normal gate built in Creative will always lead to CreativeNether and vice versa. So using the 'special gate' (other material or gate + sign) only for transports outside those pairs.

    permissions
    For example I want to be the only one to be able to create portals to non-default worlds (default is a world's configured brother world, like World-Nether, and Creative-CreativeNether). How would such a thing work out...


    I realize the above post might not be very coherent, but I simply have a lot of questions about this. MultiVerse was a disaster for my users.
    My most important concerns are the inventory seperation and the gate creation permissions.
     
  14. Just tried it. Works a charm :D Thanks very much for that!
     
  15. Offline

    akrieger

    One config file, many world configurations within it. Check out http://maximegalon.andrew.cmu.edu/akrieger/Nethrar/ and worlds.yml inside of the Nethrar folder there.
    Not for the first couple releases of 2.0. I think Multiverse lets you do something like that? But I don't know how easily that will work with Nethrar. I'll look into it, if there is sufficient demand I'll put it in 2.1 or 2.2.
    Gate construction will initially be by default world pairs only, and then in 2.1 by 'keyblocks' where the material in the corners defines the destination if you don't want the default. No signs or commands is my goal.
    Probably easy to do, I hadn't thought of a separate permission node for this.
    The permissions concerns I can probably address very easily. I'll ask my main server's admin which plugin he uses for inventory separation, and if it's Multiverse I'll look into inventory separation a bit more.
     
  16. Offline

    OrtwinS

    Nice
    Please take this as my official request for it :p.
    I cant have a creative world and a survival world next to each other without inventory seperation.
    Without it version 2.0 would be useeless for me since that is exactly what I am (was?) about to use it for.

    Keyblocks, genius! though it might make the permission-to-create thing more tricky...?

    I dont want gates to my (for now speculative) creative world spamming, I will build one big access temple to it.
    yay!
     
  17. Offline

    Pjstaab

  18. Offline

    akrieger

    No, although this does mean that releasing a "Nethrar-lite" which is essentially *just* the vanilla Portals, but with better linking and nothing else (so, 5 second delay, swirly effect) will be a lot easier. For everything else Nethrar does, it doesn't change anything.
     
  19. Offline

    Pjstaab

    Seeing how you already have the momentum thing and carts and all that good stuff I didn't know if it would do anything but I thought I might ask. Also use IRC :p
     
  20. Offline

    akrieger

    Hey man, it's the middle of the workday for me. I'm on the Pacific coast and work from 8am to 6pm, and I leave home before 7am and get back after 8pm. Such is life :D
     
  21. Offline

    davr

    The respawn feature doesn't work for me. I'm using BedRespawn as well, but that's only a partial workaround -- if a user has no bed, or bed is destroyed, they can't be respawned at their bed, so they come back in the nether, which is not what I want.
     
  22. Offline

    akrieger

    I'll look into it as soon as I can. Are you using 1.5.1 or the dev build I posted above?
     
  23. Offline

    Pjstaab

    Idling like a boss, just saw you were in the channel. Also sounds like a nice long commute, I though my half hour one was bad.
     
  24. Offline

    Bacu

    That would be spiffy.
     
  25. Offline

    ExplosiveBacoN

    You see, I'm not sure if this is implemented or not because It might have been worded differently, but can dis plugin completley disable the use of Nether portals for players without the "nethrar.use" permission? If ti doesn't do that it would be a nice addition since on my server we see the nether as a privilage.
     
  26. Offline

    akrieger

    If you set "allow-nether=false" in server.properties, then yes, a user without nethrar.use will be completely unable to use the Nether by any means.
     
  27. Offline

    ExplosiveBacoN

    Thanks for the quick reply, I appreciate it a lot, going to use this plugin from now on. Thanks again, and great job on the plugin!
     
  28. Offline

    akrieger

    I actually can't reproduce this problem at all. The default spawn location is the regular, normal, world for me, always. I never get a case where I respawn in the Nether, for some reason :confused: I'll be doing some more testing.

    Edit: it actually sounds to me like the server's default spawn location was moved to the Nether. What happens if a user dies in the real world?

    New dev build is out, same link as before, reposting for reference:

    http://maximegalon.andrew.cmu.edu/akrieger/Nethrar

    New command: /nethrar tp <destination world>, teleports the user to the specified world, obeying scaling like portals.
    New permission node: nethrar.tp, controls the above command.

    Edit: this is basically Nethrar 2.o, I just haven't done enough testing on it to be happy with releasing it.

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

    akrieger

    Ok, Nethrar 2.0 is LIVE. Check the changelist in the original post for the details.

    Big news:
    • True multiworld support! Configure worlds.yml in the Nethrar data folder, as shows above.
    • New command: /nethrar tp world. Follows the spatial ratio accurately, lets admins go between worlds to set up portals for their users.
     
  30. Offline

    Pjstaab

    I was gonna say, how have I missed Nethrar 2.0 but it came out earlier today. I'll check it out as soon as PTM has a bukkit build.
     
  31. Offline

    acegiak

    the plugin.yml in the jar from the link I'm getting from github still says 1.5 or whatever. Can you provide an alternate link to actual 2.0?
     

Share This Page