Nethrar

Nethrar

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

Version: v2.3.1 (Dev v3.0-alpha1)

General

Nethrar is a Nether portal plugin that aims for simplicity and easy usage. Portals behave like SSP portals, except that you control them. There are no requirements to start. Just drop it in and you get portals essentially identical to SSP, but with smarter placement and linking. You can also configure practically any part of Nethrar, even adding multiple worlds or changing what worlds are linked together.

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.
  • 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.
  • Custom world generator support.
  • 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.
  • It works.

Configurable settings

  • 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).
  • relative scale of each world.
  • what worlds get linked together, and in what manner.

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 not delete your existing Nether, it will just prevent the portals from teleporting you if you stand too close for too long.

Downloads

Nethrar (.jar, config.yml, worlds.yml) (.zip, .tar.gz)
Other downloads also available direct from the files section.

Dev build: (http://dev.bukkit.org/media/files/658/189/Nethrar-3.0-alpha1.jar)

Source (github) (LGPL licensed)

Configuration / Installation, most people

Download Nethrar.jar. Put it in your plugins/ directory. For most people, this is enough. Have problems? Check out the Help section below labeled "read me first".

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

# 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. TrainCarts users should set this to 'true' to allow
# TrainCarts to teleport correctly.
riderlessVehicles: false
# Set to 1 or 2 to increase the amount of console messages Nethrar will
# show.
debugLevel: 0

worlds.yml

world:
        environment: normal
        destination: world_nether
        scale: 8
world_nether:
        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 -> skylands -> 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_end:
#        environment: normal
#        destination: world
#        worldGenerator:
#                name: SkylandsPlus
#                args: if there were any args to pass to your world generator, they would go here
#        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 here.


New Permissions nodes

# Allows usage of Nethrar portals.
nethrar.use
# Allows usage of Nethrar teleportation.
nethrar.tp

New Commands

# Teleports the invoking player to the destination world.
# Places a single block of glass at the destination under the feet.
/nethrar tp worldname

Help (read this first)

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

  • New in recent versions of CB You can experience random teleportation 'loops' where if you step into a portal you'll get spontaneously re-teleported after stepping out, or teleported back and forth really fast. Setting "allow-nether=false" seems to prevent this. This is an issue with vanilla Nether by Notch et. al., or the new client, or both. Unfortunately, this also causes CB to send some false move events, and Nethrar doesn't play well with those.
  • 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

  • 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.
  • Per-world teleportation permission (eg. if player has permission for world, can take portal to that world).
  • Auto-link / generate nether for new normal worlds, as option.
  • Teleport delay. Obviously incompatible with vehicles.

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.

Nitty gritty details

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.

Changelog

  • Version 2.3.1
    • 1.2.4-R1.0 support.
    • No major changes besides updating to remove dep
  • 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.
  • Version 2.2.1
    • Removed 'physics!' spam.
  • Version 2.2
    • 1.0.1-R1 update. Supporting portals to The End. If the portal gets extinguished, no guarantees it'll be possible to re-light!
  • 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 actually 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.

More changelog available at the Changelog page.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of akrieger akrieger Apr 26, 2015 at 17:57 UTC - 0 likes

    @The_Holo: Go

    Yeah, sorry, I don't know what's going on :( Like I said, I had to stop maintaining Nethrar because of bugs in Bukkit the devs wouldn't fixed. I'm amazed (although glad - I did try to code it robustly) it still works even at all! I have to guess the issue is because of the fact it's the same named world but in a different folder. I don't know though :(

  • Avatar of The_Holo The_Holo Apr 26, 2015 at 17:12 UTC - 0 likes

    @akrieger: Go

    Whoops, Didn't realize it's such an old mod!

    Tested it just now though and every portal made linked to Oldworld instead of the Nether so it's probably for the best if i just abandon this 'timeportal' idea and keep using it for the quicker portals and nether railways instead. :)

  • Avatar of akrieger akrieger Apr 25, 2015 at 21:23 UTC - 0 likes

    @The_Holo: Go

    One idea I have - you say you are closing and reopening the portals in Manaworld. What you should do is close all the portals in Manaworld, shut down the server, remove portals.yml just in case, then restart everything and try. Nethrar doesn't currently detect when a portal is broken unfortunately :( It can only figure that out if you try to enter the portal from the other 'open' end, then it realizes the destination portal is no longer valid. So if you break and remake a portal without shutting down first, Nethrar will never know it was broken in the first place.

    Last edited Apr 26, 2015 by akrieger
  • Avatar of akrieger akrieger Apr 25, 2015 at 21:20 UTC - 0 likes

    @The_Holo: Go

    Hey The_Holo,

    I don't have any ideas offhand. It's been a while since I've looked at the code so it'll take me some time to get refreshed and maybe get a clue. Also, since Nethrar hasn't been updated for Minecraft since... a while now, due to unaddressed bugs in Bukkit, it's not clear if it is a bug with Nethrar or a bug with Bukkit :/ Give me some time, poke (by posting) if I haven't answered in a few days cause I may have just forgotten :(

    Last edited Apr 25, 2015 by akrieger
  • Avatar of The_Holo The_Holo Apr 25, 2015 at 15:35 UTC - 0 likes

    There seems to be something really dodgy with portals when used to connect worlds or am I doing something wrong?

    I have my world named Manaworld that i'd like to connect to an older version of it that i named Oldworld.(so there is Manaworld, Manaworld_nether, Manaworld_the_end and Oldworld in play) allow nether is disabled in server.properties. I ran the Oldworld separate and removed every portal in that save, and removed the portal.yml file before starting up a server with only the Manaworld, so it could create the working portals into the portal.yml. But as soon as i add the worlds.yml shit hits the fan.

    I'm closing and reopening the portals in Manaworld before entering them, one of them works and sends me to the nether as it should, while the others sends me to oldworld regardless of what i do :( (disregarding the worldblock setting) Even tested to have obsidian as worldblocks in manaworld and manaworld_nether as the regular netherportals, but they still send me to oldworld.(except one portal that works)

    Anyone have any ideas of what to do to make it work for all portals? /Holo

  • Avatar of akrieger akrieger Jul 11, 2014 at 21:38 UTC - 0 likes

    @Phoenix616: Go

    Not sure why the portals aren't connecting, but yeah. Two portals will only connect if they are precisely close enough that Nethrar would normally place the counterpart portal essentially on top of the destination.

    As far as the height concern, that's actually a fair point. I hadn't thought of that. It would be pretty easy to extend Nethrar to have an 'allowed portals range' which defined a minimum and maximum y value for each world, and then scales linearly between the two. It already has a maximum y value to support real Nether worlds, which have bedrock at y=128. So, for example, you could set one world, 'A', a mountain world to allow portals from 128 to 256, and a different 'flat' world, 'B', that would only allow 64-128, for example. Then a portal at 128 in A would go to 64 in B, and a portal at y=96 in B would go to 192 in A. Any portals outside the allowed range would just clamp to the bottom or top value.

    Would that at least help part of the problem?

  • Avatar of Phoenix616 Phoenix616 Jul 11, 2014 at 21:26 UTC - 0 likes

    @akrieger: Go

    Quote from akrieger:

    Do you mean, portals that just teleport you within the same world?

    No, I meant that they don't connect with one another if you build one in the other dimension like normal Nether portals do. (Or maybe I just did it wrong. I don't know if this 'searching for portals' is implemented or not and because it isn't described I guessed it is not.)

    Quote from akrieger:

    This is an intentional feature. When I created this, long ago, this unpredictability was a problem for me and my friends. It made it very hard to make functional portal networks that could easily and accurately integrate with our large constructions. Making the math very explicit, with no fudging or guesswork beyond the absolute minimum, was our intention.

    I totally understand the intentions behind it but the fixed height kind of breaks the system of custom worlds in my opinion. (For example you don't wouldn't want your portal under 100 blocks of stone in a large mountain world or 200 blocks above ground if you'd built it on top of a mountain.)

    I personally kinda like the 'randomness' (it's just a bit fancy math to get it correct) of the vanilla portal system so I may fork it and come up with something which suits my needs. I dunno if I would want it in the main version as it clearly differs from the main intentions but we will see. That it would be a toggleable option if I would request it to be integrated into the main version goes without saying.

    And thanks for offer of assistance from your side but don't expect to hear from me soon in this matter as this will just be another side project of mine ;)

    Last edited Jul 11, 2014 by Phoenix616: a word

    Moep.tv - because why not?

  • Avatar of akrieger akrieger Jul 11, 2014 at 19:11 UTC - 0 likes

    @Phoenix616: Go

    this plugin does not have the function of connecting pre-build portals with one another which would go into the world you attempt to travel from

    I'm not sure I understand this question. Do you mean, portals that just teleport you within the same world? No, this plugin does not support that. This is meant to replace cross-world teleportation only.

    Also I find it kind of sad that the portals get created high up in the air or deep in the mountain (I guess at the same y) and not like the normal nether portals at the best suitable place.

    This is an intentional feature. When I created this, long ago, this unpredictability was a problem for me and my friends. It made it very hard to make functional portal networks that could easily and accurately integrate with our large constructions. Making the math very explicit, with no fudging or guesswork beyond the absolute minimum, was our intention.

    If you want to fork Nethrar to add fuzzy portal location functionality, go right ahead, I'd be happy to assist you with any questions you have about the code. If you want it integrated into the main version, though, I'd ask that you have it set as an option defaulting to off. It is a radical departure from the spirit and intent of this plugin, and if you decide to open source whatever changes you make I ask that you note explicitly the difference in behavior.

  • Avatar of Phoenix616 Phoenix616 Jul 10, 2014 at 22:45 UTC - 0 likes

    It seems to me that this plugin does not have the function of connecting pre-build portals with one another which would go into the world you attempt to travel from. Am I doing it wrong or does it really don't have it?

    Also I find it kind of sad that the portals get created high up in the air or deep in the mountain (I guess at the same y) and not like the normal nether portals at the best suitable place.

    Do you have any intention of 'fixing' these 'issues' or should I look for another plugin which does that or modify this/make one myself?

    Last edited Jul 10, 2014 by Phoenix616
  • Avatar of poiNt3D poiNt3D Jul 08, 2014 at 13:44 UTC - 0 likes

    @draccydragon: Go

    You need to reactivate portal to get corner blocks work.

Facts

Date created
Sep 07, 2011
Categories
Last update
Dec 19, 2012
Development stage
Mature
License
GNU Lesser General Public License version 3 (LGPLv3)
Curse link
Nethrar
Downloads
11,052
Recent files

Authors