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

    Yurameki

    Akrieger this used to work on my server until I upgraded to 1000 now it gives me this in the server log

    Code:
    [SEVERE] Could not load 'plugins\Nethrar.jar' in folder 'plugins':
    mapping values are not allowed here
     in "<reader>", line 3, column 20:
        debugLevel: 1listen:
                           ^
    
        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchValue(ScannerImpl.java:745)
    please help, I want easy nether travel without having to police the portals! :(

    I can build portals, they light up when lit on fire, but they don't teleport....

    Also the /nethrar tp world command doesn't work says unknown command, so not sure what's up there either, I've tried it with and without the netherworld being a world named in multiverse to see if perhaps it was somehow blocking access, but it doesn't appear to be.
     
  3. Offline

    akrieger

    It looks like your config.yml file got messed up, and that is prevent Nethrar from loading correctly. Try either editing the file and fixing the issue (looks like two lines accidentally got put together), deleting the file, or downloading it again from github and see if that helps. Let me know if none of that works.

    Well, I did a bunch of work on keyblocks today. It seems to work? I spent a lot of time working on fixing issues where when you teleport between two worlds of the same scale, you accidentally get teleported twice cause of some stray move events that screw things up. The solution is incredibly hackish and I don't like it one bit, but I doubt I can make it better. I just need to iron things out and make a test set of portals that will behave somewhat predictably.

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

    OrtwinS

    Those stray move events, bugs in bukkit?
    I might think to simplistic, but upon entering a portal, any portal, it checks what block there is in the corners, and compares that with the config, then it sends you to the correct world...

    Anyway, if you need a test subject... I volunteer!
     
  5. Offline

    Yurameki

    Akrieger, I double checked the formatting and found 0 errors, so I just d/l a new copy, seems to have fixed it, was pretty odd though, thanks! You do good work!
     
  6. Offline

    Yurameki

    if I were to build a netherworld portal in a world spawned with multiverse which has no entry in nethrar, what would happen?
     
  7. Offline

    Mr_Fj

    I know, but that's not as pretty :p
     
  8. Offline

    akrieger

    Nothing, I don't think. I hope :/ I haven't actually tried that.

    Also, sorry for the really delayed response. Bukkit sometimes doesn't send emails saying that someone commented, and I really try to respond same-day.
     
  9. Offline

    Yurameki

    heh it's ok no problem, I'll give it a try in my world and see if anything goes terrible wrong and let you know :) I'd think based on the config file and such that nothing should happen but hey who knows lol

    So Akrieger, tested it for you, you can make the portal, it lights up just like normal, but no teleportation effect and no server errors, so I think you're safe ;) and so is my server :)

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

    akrieger

    Hey, awesome! Good to know that I wrote that all correctly enough to not explode, unlike Notch's portals :p
     
  11. Offline

    Mr_Fj

    Any development on keystones ;)? Also, I wanted to ask you something... Hmm, I will draw something, to make it easier, will post it here tomorrow or something.
     
  12. Offline

    akrieger

    Sounds good :) I got better late this past weekend, so I should be good for some dev work tonight. Expect maybe a beta version for testing, OrtwinS.
     
  13. Offline

    akrieger

    http://maximegalon.andrew.cmu.edu/akrieger/Nethrar/ contains a jarfile and a worlds.yml file with a sample (but useless) setup, if you want to play with it. No guarantees on goodness, though. Don't set rare materials for the keyblocks! Resource duplication will probably occur.
     
  14. Offline

    OrtwinS


    Ok, I'll try it out today or tomorrow.
    I didn't even think about the recource dupe... its quite obvious ofcourse, since the other portal will contain the same keyblocks...


    Also, thanks for the free promo, I had 2 people visiting my server because of you posting my name here :p.
     
  15. Offline

    rj89



    He's talking about me!

    Also thanks for the link will do some tests on my server.
     
  16. Offline

    Sorken

    @akrieger
    I am having the teleportation loop you write about on first page. But i also have allow-nether: false so i can only assume its a pure Nethrar loop, is there no configurable delay that i can specify myself before the user is allowed to use it again.

    There is no latency or lag to speak of, the server is located on same network and is easily keeping up both ram and cpu wise. In a period of 3 seconds more then 3 teleports will take place. Literally bouncing you back and fort before the chunks even load fully.

    Edit: Okay so i read back a bit more and i see others have requested it and you replied to them so i know its in the works when you have time and energy for it. Just consider my post akin to me liking the idea of implementing the feature :p
     
  17. Offline

    Ratchet

    i'm down to using 1 nether and 1 main world these days - is there any reason for me to keep using Nethrar or should I go to the default nether functionality? how does default handle things like keeping chunks loaded around portals for example?

    @akrieger
     
  18. Offline

    akrieger

    Hey, sorry for the delayed reply. No emails from Bukkit, again. If you want, try the dev build I linked a few posts back. It should help / fix your problems. Let me know if it doesn't.

    Everything I list as a feature is something vanilla nether does not have. So, no chunk loading, no vehicle teleportation, no instant teleport. Portals link very arbitrarily (two portals *very* far away in the real world link to the same portal in the nether). Portals are generated in fairly arbitrary locations. Etc. Let me know if you have other questions.
     
    Lizardbones likes this.
  19. Offline

    Sorken

    I couldnt use the dev build, there was no file there. Just the empty folder. I did update to 2.0 which seemed to only make it worse. Now i cant be fast and run out of loop any more.
     
  20. Offline

    akrieger

    That machine's hard drive failed. I'll see if I can get the files hosted elsewhere.
     
  21. Offline

    TerrorBite

    It seems to me that the teleport loop issue could be solved simply by adding a new thread which launches whenever someone steps into a portal. After a configurable delay (could be set to 5 seconds for a "vanilla" portal experience, or as short as 0.2 seconds for "instant" teleportation), a check is performed on the user's position to see if they are still within the portal. If they are, then they are teleported.

    This will give users the option for a delayed teleport, and also solve double-teleport and teleport-loop loop issues as follows:
    1. a second teleport triggered by a spurious move event will be aborted since the user has already been teleported and thus is no longer standing in the portal;
    2. Teleport loops will be avoided since the user has time to move away from the destination portal, meaning any spurious teleport that was triggered when they arrived will be aborted as they are no longer in the portal.
    An alternative would simply be to keep (in-memory) a list/dictionary with player names as keys and the time of their last teleport as values. When they try and teleport, this list is checked. If their name exists in the list and their last teleport was within the last second or two, the teleport would be ignored.
     
  22. Offline

    akrieger

    This is one of those things which is obvious in hindsight, but when your brain is muddled by sickness you just can't see. I'll definitely give this a shot.
    This is what I was doing in the dev build which is no longer accessible because the machine fell over.

    Edit: @Sorken dev build should be up at http://www.club.cc.cmu.edu/~akrieger/Nethrar/
     
  23. Offline

    Sorken

    @akrieger
    worldBlock: 87
    Does this relate to corner blocks to control gate destination?

    Edit: preliminary testing seem very promising, no looping :)
    Edit2: The system of moving you 1 square out of gate is good, but i would like that Nethrar performas a check that the space if free before teleporting you. Otherwise you end up on top of blocks.. if theres alot of blocks you could end up on top of nether world. If there is no space, then dont teleport. Just do nothing. Just struck me it may be hard to clear around portal if you cant teleport through it.. perhaps clean around portal if obstructions are found before teleporting?
     
  24. Offline

    akrieger

    Nethrar always did the 'move you one square out' thing - although more specifically, it moved you one square in the direction you were headed through the portal, so you ended up just outside it on the other side.
    As far as blocking teleportation or clearing blocks every time... I considered it. The issue with blocking teleportation is that someone goes in, goes "crap can't go through", backs out... and is suddenly teleported to the wrong side of the portal. I could clear every single time, but I wanted to give people a chance to blockade their portals by filling in the blocks. The only other way would be to have a set of 'whitelisted' blocks which you can materialize into (including redstone, torches, etc), but then if new blocks get added then what do you do... I'll think about it.
     
  25. Offline

    Sorken

    @akrieger
    The part about crap cant go through and backing up, if other side of portal is isnt obstructed then that would be as good a place to arrive as any. Otherwise you could just make a new portal elsewhere not too far away, go to first portal and clear it. Would add more realism. But ive previously arrived ontop of nether world, walking on the bedrock due to obstructed portals. I have no idea what would happen if people try building up there.. or pour or water or lava or something.
     
  26. Offline

    BattleGroundxx

    would this work with StarGates?
     
  27. Offline

    akrieger

    the issue isn't that it's not a good place to end up, but that my current method for determining which way you are going through a portal is inadequate for this situation. Also I dint thunk you can build on top of the nether, but I could be wrong.
    As long as your stargates aren't shaped like vanilla nether portals you should be fine.
     
  28. Offline

    BattleGroundxx

    ok
     
  29. Offline

    TerrorBite

    Alternatively it might be a better idea to use the Bukkit scheduler instead of launching a new thread.

    I did manage to find the code on GitHub and noticed the call to PortalUtil.canTeleport(player), which seems to be the cooldown you refer to. However it's only 0.5 seconds which may not be adequate if someone doesn't move out of a portal within that timeframe.
     
  30. Offline

    akrieger

    That is what I figured you meant.
    Not an issue. Nethrar does not teleport players *into* the other portal, it teleports them *through* the other portal - they block they end up in is not a portal block, just a block adjacent to one. In fact, in the simple case (player walking through on foot) the player never actually touches a portal block, since the teleport triggers on the event they are about to move *into* the portal, but they get teleported before actually touching it. The .5s delay is to account for server lag and other factors which might delay processing of the spurious move events from a buggy server, not from a player reentering a portal themselves.
     
  31. Offline

    akrieger

    With 1.8 out, I plan to update and release Nethrar 2.1 this weekend. I might even throw in auto-Nethering as a bonus, and leave keyblocks for different-world destinations only.
     

Share This Page