[INACTIVE][TP/FUN] NetherGate v0.56 - Just Like Single Player! [803]

Discussion in 'Inactive/Unsupported Plugins' started by NathanWolf, Feb 4, 2011.

  1. Offline

    NathanWolf

    NetherGate - A plugin that uses multi-world to create a completely automatic Nether experience.

    If you're using Essnetials, go no further.

    Essentials breaks NetherGate in strange and frustrating ways, I'm not going to support it anymore. I'll try and get this resolved by NG beta, at which point I'll remove this message.

    [​IMG]


    Use
    To use NetherGate, drop the required jars in your plugins folder.

    Then you can create and light a portal to travel to the nether!

    Downloads
    Grab elBukkit.zip to get all of my plugins- take out the ones you don't want.

    For more details on NetherGate, or for individual jar downloads, see the NetherGate entry on bukkit's wiki.

    Tip Jar
    If you really love my stuff, and you're feeling generous, I'd more than appreciate a donation.

    Go here if you're interested!

    Changelog
    View changelog on github
     
  2. Offline

    Bob_Sack

    My output is:
    nether (nether) : 0x -> world
    world (normal) : 0x -> nether

    After re-targetting, it remains the same (obviously).
     
  3. Offline

    NathanWolf

    Bah! Well, it can't always be the same solution, yeah? :)

    Hm... so remind me please, since I may have you online right now :)
    - Does "/nether world go" work?
    - What about "/nether world go world" or "/nether world go nether"?
    - Anything at all in the console when you go through a portal?
    - Do you have Essentials (any of it) installed?
     
  4. Offline

    Bob_Sack

    "/nether world go" and "/nether world go nether (or world)" give a read out in-game saying "Going to world nether" or "Going to world world" but nothing else happens. No console readout when I perform either of those commands or when I step into a portal.

    And yeah I have essentials installed and I use to use the nether function on it, but deleted the nether folder for it and removed all essentials-related nether commands from group manager. My essentials config says specifically:
    nether:
    enabled: false
    folder: nether
    portals-enabled: false
     
  5. Offline

    NathanWolf

    I know that I've gotten reports otherwise, but I really think essentials interferes with NetherGate.

    Also- when you say "you deleted the nether folder" that may be the problem right there. Do you mean the "nether" folder in your server root, or one under "plugins/Essentials"?

    Hm- regardless, try this:
    Code:
    /nether world create nether hubworld
    /nether world target world hubworld
    /nether world target hubworld world
    Let me know! :D
     
  6. Offline

    Bob_Sack

    There never was a nether folder in "plugins/essentials" or in "plugins" at all, I only had the one in my server root. It appears to have re-appeared regardless, however. Albeit without any user data in it.

    In order, those commands gave me:
    World hubworld created
    Retargetted world world to hubworld
    Retargetted world hubworld to world

    But the problem persists. Even creating a new portal doesn't do anything, but lighting it gives a console readout of "[INFO] 0, 1" I have no clue if that means anything.
     
  7. Offline

    Ambedrake

    Old portals work for me, but with the new update any newly spawned potals give the 0,1 info. I found though if I restart the server it seems to work after that. Not so clear as to why it does this but its interesting. Also on the note of the 'nether' folder, that was your netherworld dude >.< it re spawned the folder by making a new netherworld lol, trust me I did that a few times before I figured that out I felt like a tard.

    Also on the idea of essentials, I personally have not been able to get them to work together though I do know a couple buddies who had some magic luck with it all of a sudden working with out a clue why, where as I was of no such luck so I just installed spells and ditched essentials ^_^

    Now on to my actual question and away from my chatter, @NathanWolf, how difficult would it be to get the /nether create world to auto update worlds to the 1.3 format if the world is new or if its loaded and seen to be in the old format?

    Also on a side note I notice that sometimes when making new worlds the targets re-order themselves instead of letting the admin making them manually target them.

    IE )

    World A > World B
    Word B > World C
    World C > World A
    World D > World A

    becomes

    World A > World B
    Word B > World C
    World C > World D
    World D > World E
    World E > World A

    Doesn't happen all the time but is quite annoying when you have a long list of worlds interconnected in different circles and you have to redo the whole target system cuz of this glitch. Anyways just a quirk to inform ya about ^_^
     
  8. Offline

    Magik

    ok... so weird stuff happening - I have Essetnials as well, and there does seem to be some conflicting going on.

    After building a portal, when I light it, I see an [INFO] 0,1 in the console

    but trying to walk through it, nothing happens

    I removed Essentials.jar and restarted. The portals "work", but I saw some weird funky stuff going on:

    So I go through the portal, it takes me to the nether ( which BTW takes freaking forever to load it seems ). And then once in the nether, I directly walk right back into the portal.

    I get one of these:
    02:53:07 [INFO] NG: TP'ing Player kigam from (-355, 27, -1693) to (-355, 28, -1693)
    02:53:07 [INFO] NG: Building a full portal at -355, 28, -1693 and filling with air

    And it's created a new portal somewhat near the original portal, but not there ( it was probably within 5-8 blocks in the x-z direction, but it was like 50 blocks high on the y ).

    So I go back into this portal, and now I'm back at that nether portal that got created. I turn around and go back in the portal again. And it makes another portal again - this time at the same y location, but off by about 2 blocks in the x direction.... So now I have two portals back to back in some random location in the regular world...

    Code:
    02:53:07 [INFO] NG: TP'ing Player kigam from (-355, 27, -1693) to (-355, 28, -1693)
    02:53:07 [INFO] NG: Building a full portal at -355, 28, -1693 and  filling with air
    02:53:12 [INFO] NG: TP'ing Player kigam from (-356, 29, -1694) to (-356, 98, -1694)
    02:53:12 [INFO] NG: Building a full portal at -356, 98, -1694 and  filling with air
    02:53:38 [WARNING] Can't keep up! Did the system time change, or is the server overloaded?
    02:53:47 [INFO] NG: Couldn't find a place for kigam to stand - sorry for the fall!
    02:53:47 [INFO] NG: TP'ing Player kigam from (-357, 98, -1695) to (-357, 98, -1695)
    02:53:47 [INFO] NG: Building a full portal at -357, 98, -1695 and  filling with air
    02:54:11 [INFO] NG: TP'ing Player kigam from (-358, 98, -1696) to (-358, 99, -1696)
    02:54:11 [INFO] NG: Building a full portal at -358, 99, -1696 and  filling with air
    02:54:12 [WARNING] kigam moved wrongly!
    02:54:12 [INFO] Got position -358.0, 100.0, -1696.0
    02:54:12 [INFO] Expected -357.69999998807907, 98.20000004768372, -1695.699999988079
    02:54:21 [INFO] NG: Couldn't find a place for kigam to stand - sorry for the fall!
    02:54:21 [INFO] NG: TP'ing Player kigam from (-356, 98, -1695) to (-356, 98, -1695)
    02:54:21 [INFO] NG: Building a full portal at -356, 98, -1695 and  filling with air
    02:54:27 [INFO] NG: TP'ing Player kigam from (-356, 28, -1694) to (-356, 98, -1694)
    02:54:27 [INFO] NG: Building a full portal at -356, 98, -1694 and  filling with air
    
    here are some logs, I may have gotten a couple more created than I described here as well...
     
  9. Offline

    NathanWolf

    Since I'm sharing a bit of my dev progress here, I thought you may be interested to know that I've got NetherGate up and running on Persistence 0.75, which is not released and really has no new features... so basically this is just a milestone for me :)

    Anyway, I'm working on bringing Wand/Spells over - I think CrowdControl may end up being drop-in, since this really only affects plugins that are using permissions (other than the automatic ones set up for console commands).

    Anyway, I'm taking the opportunity to also refactor Wand/Spells- I won't go into too much depth here (off-topic), but basically it's going to be one plugin, now, but multiple libraries (to maintain modularity), just like Persistence 0.75.

    This will let me (or other devs!) drop-in additional Spell "packs"- literally just drop them in, and new spells will be available in the Magic system, and for use with Wands. Neato!
    [MERGETIME="1300105728"][/MERGETIME]
    Ah- whoopsie!

    So, yeah, basically never delete anything from your server root unless you're really sure :) The "nether" folder is a world folder- it's got world data in it, just like your default world folder. This may have been created by either Essentials or NetherGate, but it shouldn't matter- once it's created it's just a world folder. Only delete it if you want that world gone- and then also make sure to remove the world from NetherGate, if you're using it, to keep things in sync.

    It seems like quite a few people are having this issue- everything seems to work except for portals. For at least one person, it was a world-targetting issue, but that shouldn't be your problem given the above.

    After doing all that, what happens now with "/nether world go"? Does that work, at least?
    [MERGETIME="1300105995"][/MERGETIME]
    Heh- I LOL'd :)

    Yah, that's obviously where I'm at, too, but some people want/need Essentials, and it sucks to make them have to choose between that or NG. I've had people tell me it works for them- but I have no idea what the "magic sauce" is to make that happen :(

    I know :(

    If this did happen, it'd probably have to be an internal Bukkit thing- this is clearly something to do with multi-world, mcserver only tries to convert maps on start-up, since multiworld is a bukkit thing mcserver is not expecting worlds to get loaded at any other time.

    Hopefully the devs will fix it, but quite honestly probably not. Since there is a workaround, most likely everyone would have their map data converted already by the time they fixed it, anyway.

    I have 6 worlds on my public server, so I certainly feel/felt your pain on that one :) Make sure to back them all up right after you convert them....

    Yeah, totally. That was one of those "seemed like a good idea" at the time things, I called it "auto daisy chaining".

    In practice, it sucks. :)

    I'm going to auto-bind the first normal/nether pair I auto-create, and then leave new worlds alone after that- good suggestion.

    Thanks! :D
    [MERGETIME="1300106346"][/MERGETIME]
    I will say this- I get a lot more reports that NG does not work with Essentials than I do otherwise. Have you guys tried NG without Essentials, just to remove (or identify) that as a variable?

    I've always wondered what that is, but that actually happens in "vanilla" bukkit if you want through a portal. I'm assuming it's some kind of mcserver debug print from the unfinished portalling code in SMP.

    Ah, well that answers my question :) Thanks for trying this...

    Should only take that long the first time- it's actually creating the new world (quite a few chunks of it, to start with) the first time you portal.


    So far so good! :D

    Well, sorta- shouldn't really create a full portal, but I'm willing to blow that off as a "permissions thing" for now...

    Hmm... so, close but no cigar, eh?

    Yah- so this kind of stuff is why it should not be auto-creating this portals yet. The portal pairing and location mapping code need work, and until it's really tight things get messy like this, unfortunately :(

    Ouch!

    So, this is lame. The "moved wrongly" thing is an internal issue- you can see that it usually doesn't miss by much (only a few blocks), but its enough to make all my finding algorithms break in strange ways- as you can see here, I had to give up finding a place for you to stand :(

    I'm hoping to address this in my NG refactor by using BukkitSched to delay your TP a bit- I think this happens because I'm TP'ing you right as the chunk is finishing loading.

    Thanks! Stay tuned for fixes...
    [MERGETIME="1300109009"][/MERGETIME]
    Hmmmm... I've been looking into some "issues" with CrowdControl, basically it doesn't work without NetherGate (to be fair, it was originally intended as a NetherGate add-on....)

    Anyway, what I'm seeing over there may be related to NG not getting along with Essentials.

    I'm hoping I can abstract my multi-world accessing code in a way that fixes both CrowdControl and NetherGate- neither of which (I think) are really expecting anything but NG to create/load worlds- and I think that's what Essentials is doing that breaks Nethergate.

    This would make sense, since NG tries to load worlds on startup, and I imagine Essentials tries to create/load its nether world on startup- so maybe that's where they butt heads. And, depending on plugin load order, NG wins or loses- so it's a random thing, which explains why it works for some with Essentials and not for others.

    Anyway, this is all conjecture at this point, I just wanted to share :)

    I'm hoping that when I make the changes to Persistence to make CrowdControl stand-alone, I'll be able to get NetherGate to work well with other multi-world plugins using the same or similar changes- we'll see!
     
  10. Offline

    Magik

    Yeah, I agree with this - you shouldn't require someone to choose between NG and Essentials

    Well that FINALLY answers one question I've always had ( even before NG ) about seeing lots of 0, 0's in the console - mebe that's vanilla bukkit as well - always wondered where it was coming from ;)


    If you'd like me try anything else I can as well - it's a lot harder to debug things like this because you don't have the raw source for Essentials.


    Maybe there's some way you can cause the server to generate chunks when a portal is built - and not when a portal is used to travel - and also maybe that's where the auto-generation of the other world portal should happen. I just don't know how well bukkit supports code causing chunks to be loaded. And I don't think having extra delay when a portal is used for the first time is the best route - in my mind, you have that bit of buffer time between a portal being created and when a player would use it to travel ( though not much possibly ).





    Do you know exactly what the cause of this message is? You tried to tp someone into a block or something?

    I do somewhat agree that there is likely some sort of conflict with Essentials and multi-world handling. But I do know when I have the essentials options for nether turned off - it does not try to generate the nether world on server boot.


    Let me know if there's anything I can do to help. I'd love to get a stable working SSP-like nether portals working.
     
  11. Offline

    NathanWolf

    Hmmmm... well, if you're feeling adventurous, try this!

    NetherGate.zip

    It shouldn't be, like, super dangerous or anything- but backup at least your plugins folder first. If you're using Wand or Spells or CrowdControl, remove those- the Persistence.jar contained in this zip will break them.

    SQLite.jar is required as well, now- I broke that out of Persistence.jar, because I'm tired of uploading 3MB worth of SQLite drivers that never change each time I push a Persistence update ;) So, that's a thin data store provider wrapped around the sqlite drivers- you just drop it in plugins, like any other plugin.

    I *think* I may have modified NetherGate in a way that would make it play nicer with Essentials- if you can test and let me know, that'd be awesome! :D

    Well, to be clear, it's only the first portal use ever (not just per-portal) that causes the big hit.

    When portalling to an entirely new area, it's a little rough, but still not that bad- a single chunk creation shouldn't slam your server too badly- really, this happens all the time if you're just exploring by foot :)

    Actual chunk load is very fast, generally. However, since you mentioned it....

    I plan to have an option (it'll be an option, because it'll eat a ton of memory) eventually to auto-load chunks. The way this would work is that I would detect when a chunk with a portal in it loads, and then I would load the corresponding target chunk. This could cause a pretty crazy chain reaction of chunk loads, so there will have to be some sort of recursion limit, which could get complex- it'll definitely be post-alpha :)

    No, I don't :(

    I have not yet done the work of finding the internal code that's spitting this out, tracing it, etc. I'm hoping to just work around it and forget it, honestly :)

    I'm thinking it's something to do with trying to tp you before the chunk is really loaded- and then you end up somewhere different then you were supposed to. Yeah, there's an understanding gap in the middle of that sentence :)

    I'm heard it happens off or on, unfortunately.

    If my theory holds sound, Essentials probably creates the nether world either way, but prevents travel there if you have it turned off.

    The creating of the world is the issue, I think- NG expects to be the one to do that. So, I'm hoping it'll play better now- we'll see. It still may be broken if Essentials doesn't play nice, and there's not a lot I can do about that, then.

    Check out that zip with Essentials if you get a chance! That'd be awesome- though, given the random nature of the issue, I wouldn't be completely confident I had it nailed down, even if you reported it working. Thanks in advance! :)
     
  12. Offline

    Bob_Sack

    So I removed essentials entirely and now NG works. It's definitely a compatibility problem. However I get the same problem Magik gets, where your portal from nether -> world gets created like 50 blocks up on the Y axis. I make a portal in my palace which takes me to the nether, but on the travel back, it decides it needs a new portal on top of my palace's roof. This problem seems to be in every nether plugin I've tried though. An inability to realise there's already an existing portal, and it doesn't need to make another one =P

    I'm curious as to if creating the nether world on NG without essentials, then loading essentials back up would give NG precedence over essentials, and they could work together. I may test this today.

    Anyways you been really helpful nathan, and I hate having to use 9001 other plugins to substitute everything essentials did, but I can't live without my nether =P
     
  13. Offline

    NathanWolf

    You may want to give the zip I posted above a try- I'm hoping it resolves the Essentials compatibility issues. I'm really not sure, though- and that's a fairly "experimental" build I posted there, so feel free to pass on that.

    Is it wrong that that makes me happy to hear? :D

    That's because nobody is tracking portals, I'd bet. Still, they should be able to find the one that's there by looking for portal blocks- I dunno.

    Anyway, none of that is working yet in NetherGate, but it is getting very close. There's at least a plan/design in place for it, and it's probably 90% of the way there, functionally speaking.

    Very possible! You may not even have to do it first- try "nether world create nether nether"- your default world should auto-load ok. Repeat this command for any other worlds, e.g. "nether world create normal myworld".

    The next version of NG is going to have a "load" command as well as "create". The only real difference is that "load" won't take a "type" parameter, and will fail if the world does not exist (as opposed to creating a new one). I think this distinction will help out in situations like this, though- right now "world create" really loads or creates a world- so it's a bit confusing.

    Heh- I totally understand, and I appreciate it! I definitely want to work with key plugins like Essentials and Permissions- there are certain things I know people really can't live without, and I'm certainly not going to stand in their way :)
     
  14. Offline

    Magik

    so I'm trying this out on my work computer - so different setup than when I posted before...

    but besides some Permissions/PermissionsSupport issues ( I had to remove PermissionsSupport to get it to work - was throwing exceptions ), it seems to be more broken here

    when I first get on, i type /nether world create nether nether, and I get this:

    Code:
    15:31:59 [SEVERE]     at java.lang.reflect.Method.invoke(Method.java:597)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.utilities.PluginUtilities.dispatch(PluginUtilities.java:397)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.utilities.PluginUtilities.dispatch(PluginUtilities.java:329)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.utilities.PluginUtilities.dispatch(PluginUtilities.java:329)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.utilities.PluginUtilities.dispatch(PluginUtilities.java:301)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.utilities.PluginUtilities.dispatch(PluginUtilities.java:269)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.plugins.nether.NetherGatePlugin.onCommand(NetherGatePlugin.java:844)
    15:31:59 [SEVERE]     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
    15:31:59 [SEVERE]     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:80)
    15:31:59 [SEVERE]     at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:183)
    15:31:59 [SEVERE]     at net.minecraft.server.NetServerHandler.c(NetServerHandler.java:645)
    15:31:59 [SEVERE]     at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:608)
    15:31:59 [SEVERE]     at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:602)
    15:31:59 [SEVERE]     at net.minecraft.server.Packet3Chat.a(SourceFile:24)
    15:31:59 [SEVERE]     at net.minecraft.server.NetworkManager.a(SourceFile:230)
    15:31:59 [SEVERE]     at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:76)
    15:31:59 [SEVERE]     at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
    15:31:59 [SEVERE]     at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
    15:31:59 [SEVERE]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
    15:31:59 [SEVERE]     at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    15:31:59 [SEVERE] Caused by: java.lang.NoSuchMethodError: com.elmakers.mine.bukkit.utilities.PluginUtilities.getWorld(Lorg/bukkit/Server;Ljava/lang/String;Lorg/bukkit/World$Environment;)Lcom/elmakers/mine/bukkit/persistence/dao/WorldData;
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.plugins.nether.NetherManager.createWorld(NetherManager.java:57)
    15:31:59 [SEVERE]     at com.elmakers.mine.bukkit.plugins.nether.NetherGatePlugin.onCreateWorld(NetherGatePlugin.java:736)
    15:31:59 [SEVERE]     ... 23 more
    15:31:59 [INFO] Peristence: Can't find callback 'onCreateWorld' for plugin NetherGate
    
    and when walking through a portal ( even thougH I couldn't create the nether above ) I get this:
    Code:
    15:35:09 [SEVERE] Could not pass event PLAYER_MOVE to NetherGate
    java.lang.NoSuchMethodError: com.elmakers.mine.bukkit.utilities.PluginUtilities.getWorld(Lorg/bukkit/Server;Ljava/lang/String;Lorg/bukkit/World$Environment;)Lcom/elmakers/mine/bukkit/persistence/dao/WorldData;
        at com.elmakers.mine.bukkit.plugins.nether.NetherManager.createWorld(NetherManager.java:57)
        at com.elmakers.mine.bukkit.plugins.nether.NetherManager.getCurrentWorld(NetherManager.java:43)
        at com.elmakers.mine.bukkit.plugins.nether.NetherManager.getNextWorld(NetherManager.java:113)
        at com.elmakers.mine.bukkit.plugins.nether.NetherManager.startAutoPortal(NetherManager.java:490)
        at com.elmakers.mine.bukkit.plugins.nether.NetherManager.onPlayerMove(NetherManager.java:430)
        at com.elmakers.mine.bukkit.plugins.nether.NetherPlayerListener.onPlayerMove(NetherPlayerListener.java:27)
        at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:192)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:59)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:255)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:124)
        at net.minecraft.server.Packet10Flying.a(SourceFile:126)
        at net.minecraft.server.NetworkManager.a(SourceFile:230)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:76)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
        at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
     
  15. Offline

    Bob_Sack

    EDIT: Ninja'd by Magik. I forgot to mention I also had to use the build-in permissions.yml cause I got exceptions.

    Using the above .zip with essentials hardly works. I get an error when I step into a gate like this:

    Code:
    15:26:00 [SEVERE] Could not pass event PLAYER_MOVE to NetherGate
    java.lang.NoSuchMethodError: com.elmakers.mine.bukkit.utilities.PluginUtilities.
    getWorld(Lorg/bukkit/Server;Ljava/lang/String;Lorg/bukkit/World$Environment;)Lco
    m/elmakers/mine/bukkit/persistence/dao/WorldData;
            at com.elmakers.mine.bukkit.plugins.nether.NetherManager.createWorld(Net
    herManager.java:57)
            at com.elmakers.mine.bukkit.plugins.nether.NetherManager.getCurrentWorld
    (NetherManager.java:43)
            at com.elmakers.mine.bukkit.plugins.nether.NetherManager.getNextWorld(Ne
    therManager.java:113)
            at com.elmakers.mine.bukkit.plugins.nether.NetherManager.startAutoPortal
    (NetherManager.java:490)
            at com.elmakers.mine.bukkit.plugins.nether.NetherManager.onPlayerMove(Ne
    therManager.java:430)
            at com.elmakers.mine.bukkit.plugins.nether.NetherPlayerListener.onPlayer
    Move(NetherPlayerListener.java:27)
            at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.ja
    va:192)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:59)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:255)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:124)
            at net.minecraft.server.Packet10Flying.a(SourceFile:126)
            at net.minecraft.server.NetworkManager.a(SourceFile:230)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:76)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    When I try to use /nether world go nether, I get this:

    Code:
    15:28:25 [SEVERE] Persistence: Error invoking callback method onGo of com.elmake
    rs.mine.bukkit.plugins.nether.NetherGatePlugin
    15:28:25 [SEVERE] java.lang.reflect.InvocationTargetException
    15:28:25 [SEVERE]       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M
    ethod)
    15:28:25 [SEVERE]       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown S
    ource)
    15:28:25 [SEVERE]       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unkno
    wn Source)
    15:28:25 [SEVERE]       at java.lang.reflect.Method.invoke(Unknown Source)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.utilities.PluginUtilities.di
    spatch(PluginUtilities.java:397)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.utilities.PluginUtilities.di
    spatch(PluginUtilities.java:329)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.utilities.PluginUtilities.di
    spatch(PluginUtilities.java:329)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.utilities.PluginUtilities.di
    spatch(PluginUtilities.java:301)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.utilities.PluginUtilities.di
    spatch(PluginUtilities.java:269)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.plugins.nether.NetherGatePlu
    gin.onCommand(NetherGatePlugin.java:844)
    15:28:25 [SEVERE]       at org.bukkit.command.PluginCommand.execute(PluginComman
    d.java:35)
    15:28:25 [SEVERE]       at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCo
    mmandMap.java:80)
    15:28:25 [SEVERE]       at org.bukkit.craftbukkit.CraftServer.dispatchCommand(Cr
    aftServer.java:183)
    15:28:25 [SEVERE]       at net.minecraft.server.NetServerHandler.c(NetServerHand
    ler.java:645)
    15:28:25 [SEVERE]       at net.minecraft.server.NetServerHandler.chat(NetServerH
    andler.java:608)
    15:28:25 [SEVERE]       at net.minecraft.server.NetServerHandler.a(NetServerHand
    ler.java:602)
    15:28:25 [SEVERE]       at net.minecraft.server.Packet3Chat.a(SourceFile:24)
    15:28:25 [SEVERE]       at net.minecraft.server.NetworkManager.a(SourceFile:230)
    
    15:28:25 [SEVERE]       at net.minecraft.server.NetServerHandler.a(NetServerHand
    ler.java:76)
    15:28:25 [SEVERE]       at net.minecraft.server.NetworkListenThread.a(SourceFile
    :100)
    15:28:25 [SEVERE]       at net.minecraft.server.MinecraftServer.h(MinecraftServe
    r.java:357)
    15:28:25 [SEVERE]       at net.minecraft.server.MinecraftServer.run(MinecraftSer
    ver.java:272)
    15:28:25 [SEVERE]       at net.minecraft.server.ThreadServerApplication.run(Sour
    ceFile:366)
    15:28:25 [SEVERE] Caused by: java.lang.NoSuchMethodError: com.elmakers.mine.bukk
    it.utilities.PluginUtilities.getWorld(Lorg/bukkit/Server;Ljava/lang/String;Lorg/
    bukkit/World$Environment;)Lcom/elmakers/mine/bukkit/persistence/dao/WorldData;
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.plugins.nether.NetherManager
    .createWorld(NetherManager.java:57)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.plugins.nether.NetherManager
    .getCurrentWorld(NetherManager.java:43)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.plugins.nether.NetherManager
    .go(NetherManager.java:458)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.plugins.nether.NetherManager
    .go(NetherManager.java:477)
    15:28:25 [SEVERE]       at com.elmakers.mine.bukkit.plugins.nether.NetherGatePlu
    gin.onGo(NetherGatePlugin.java:685)
    15:28:25 [SEVERE]       ... 23 more
    15:28:25 [INFO] Peristence: Can't find callback 'onGo' for plugin NetherGate
    But at least it's doing something, right? =P
     
  16. Offline

    NathanWolf

    Ouch... uh... if by "something" you mean "filling your logs with errors" then yeah I guess it's doing something, allright :)

    Ok, well, clearly that zip file was a fail, big time. I'll try and get something better up soon- or maybe I'll just download Essentials and figure this out myself :D

    Thanks for trying, you two! ;)
    [MERGETIME="1300149162"][/MERGETIME]
    Uh... crap, whoops, sorry- I see what happened there. Well, if I have not tried your patience too much already, I'll put another zip up in a second- but I really am going to go download some Essentials now, too.
    [MERGETIME="1300149237"][/MERGETIME]
    The really sad thing here? NetherGate actually has compile errors right now. I told you to try out a jar with compile errors... that's about the lamest thing I've done here yet, really :)

    Anyway, they are simple refactoring issues, it's just the kind of thing I really should've noticed before publishing that zip.
    [MERGETIME="1300151423"][/MERGETIME]
    Ok, so maybe this will help: elBukkit.zip

    This is a ready-to-run CraftBukkit with NetherGate and CrowdControl.

    I unzipped this myself and it started up clean. The permissions worked (2 profiles loaded), then I used
    Code:
    grant player NathanWolf admin
    On the server console to make myself an admin. Then I used "/su" in-game, then "/nether kit" to give myself a portaling kit. I then used "/su" again to make sure that permissions were normal.

    Finally, I built a portal by hand, lit and walked through- nether!

    Let me know how you fare, if you try this out- my next step is to test this personally with Essentialls.
    [MERGETIME="1300151479"][/MERGETIME]
    Hmmm.. ok, it's not *quite* right- I think it created a normal world instead of nether, and it auto-created a full portal on the other side (in the right place, though...)

    But it should be "enough" to test Essentials compatibility- if the portal takes you anywhere at all, then it's probably working :)
     
  17. Offline

    Magik

    I figured as much - either that or you gave us incompatible plugins - what with the Class not found errors ;)

    testing so far on a nearly fresh install of a miencraft server: ( not using all of your zip, just some of the jars in plugins )

    No essentials, no crowd control
    Craftbukkit #531
    iConomy, Permissions, Persistence, SQLite, DynamicMarket, DMWrapper, and NetherGate

    So one bug/issue first is I have not created a nether world yet. So I get in-game, get put into the admin group ( with grant on console ), then I try /nether world create nether nether ( it grinds out a bit - all that SQLite disk access - god i hate SQLite ), and then says world created. But no world has been created yet - I imagine all the work it was doing was populating that SQLite DB. I create a portal, and try to go through it - nothing - no errors.

    So I restart the server - and now it generates the nether folder on boot ( with the Preparing spawn area for nether, XX% messages ). Try to walk through the portal I created before, still nothing.

    So I try /nether world list - and it looks like:
    Code:
    nether (normal): 0x -> (unkown)
    world (normal) : 0x -> (unknown)
    So a little of that worries me already - it looks like it created a regular world for my nether folder? And I figure the worlds aren't targeting each other yet. So I retarget them with: /nethertarget nether world & /nether target world nether. And now when I do /nether world list it looks like they are targeting each other.

    So I try to hop through the portal again, and weee! it works! Although it auto-genereated the portal right in the middle of a tree... the portal blocks were there - but after trying to go through it again - it looks like the portal blocks dissappear ( not the obsidian, but the purple portal blocks ). So I burn the tree down - it looks like the portal is missing like 8 blocks ( I chalk that up to your code that doesn't destroy existing stuff when it auto-generates the other side ). I rebuild the portal, and light it up, and travel through.

    Oh noes, it's auto-generated another portal with a 2 z offset and a 1 x offset ( but right y coord )
    Code:
    18:34:31 [INFO] NG: TP'ing Player kigam from (0, 68, 320) to (0, 71, 320)
    18:34:31 [INFO] NG: Building a full portal at 0, 71, 320 and  filling with air
    18:34:32 [WARNING] kigam moved wrongly!
    18:34:32 [INFO] Got position 0.0, 72.0, 320.0
    18:34:32 [INFO] Expected 0.30000001192092896, 68.20000004768372, 320.0
    18:34:32 [INFO] NG: TP'ing Player kigam from (0, 71, 319) to (0, 68, 319)
    18:34:32 [INFO] NG: Building a full portal at 0, 68, 319 and  filling with air
    18:34:33 [WARNING] kigam moved wrongly!
    18:34:33 [INFO] Got position 0.0, 69.0, 319.0
    18:34:33 [INFO] Expected 0.0, 71.0, 319.30000001192093
    18:34:35 [WARNING] Can't keep up! Did the system time change, or is the server o
    verloaded?
    
    At this point, I notice the first portal is unlit as well... So I light that guy up, and try to travel through it - no tp.... Try the 2nd portal, and at least that one works now.... well almost.... it created another portal!
    Code:
    18:34:31 [INFO] NG: TP'ing Player kigam from (0, 68, 320) to (0, 71, 320)
    18:34:31 [INFO] NG: Building a full portal at 0, 71, 320 and  filling with air
    18:34:32 [WARNING] kigam moved wrongly!
    18:34:32 [INFO] Got position 0.0, 72.0, 320.0
    18:34:32 [INFO] Expected 0.30000001192092896, 68.20000004768372, 320.0
    18:34:32 [INFO] NG: TP'ing Player kigam from (0, 71, 319) to (0, 68, 319)
    18:34:32 [INFO] NG: Building a full portal at 0, 68, 319 and  filling with air
    18:34:33 [WARNING] kigam moved wrongly!
    18:34:33 [INFO] Got position 0.0, 69.0, 319.0
    18:34:33 [INFO] Expected 0.0, 71.0, 319.30000001192093
    18:34:35 [WARNING] Can't keep up! Did the system time change, or is the server o
    verloaded?


    So one thing I've noticed while testing this. I think you have an issue around detecting where the player /tp'd FROM. It seems that the orientation of the new portal reflects the orientation the PLAYER is facing when he walks through the portal. If I strafe into the portal, it will create a portal 90 degrees to the original.

    Also, it seems like it is auto-creating portals based on the PLAYER's position when traveling through the first portal. So if I go through a portal on the right block - it looks like it thinks I tp'd from a different position than if I tp'd from the left block....

    I think maybe an idea is to re-work your portal detection/autocreation algorithm. I don't have your source to look at, so I'm just guessing here. But I imagine you don't search for the portal that is being travelled through, and only look at the player's position/orientation. I think you need to add another step to that flow that first finds the portal the player actually went through and grabbing some info, e.g. portal's ACTUAL position ( you will need to decide on how you want to specificy that in your data structure ) and the portal's orientation, etc... And then from there, make the new portal. I think there is a problem with your portal detection code - in that it is relating portal positions to PLAYER positions - and you don't want that. You want a mapping between PORTAL position to PORTAL position.

    So in my "nether" world ( that's really a regular world ) I now have 3 portals, in a sorta cool looking structure ;)
    [​IMG]

    I believe this is the result of travelling through the portal in different positions/orientations each time. And your code is trying to detect a portal based on the PLAYER parameters, and not on origin PORTAL parameters.

    But yeah, it's looking like you may be getting closer... I think your /world create needs to be fixed so it doesn't require a reboot tho ;)

    Let me know if you want me to try anything else.
     
  18. Offline

    NathanWolf

    Yeah- this zip is really just up for testing Essentials compatibility- otherwise, it's buggy as hell :)

    This is, of course, why I haven't released this version yet- I should be able to get these kinks out soon, but I'm not too worried about it- I just want to know whether or not I've got a fix for this Essentials business, basically.

    Right you are- I'm currently very conservative in the types of blocks I'll replace when building a nether gate. I'll basically not replace anything but air or dirt.

    The new location mapping code should do a better job of "looking around" a bit, to (for instance) try to find a nice spot in between trees, when possible.

    The fact that it's auto-generating portals (and the fact that you could use "/nether world create", for that matter), indicates some sort of permissions issue - I'll take a look.

    Heh- gate orientation is hard-coded at the moment. The gate construction code is not really complete, since it's basically (supposed to be) turned off right now. Ultimately, it should "match up" to the paired gate's orientation- not necessarily the player's orientation when you walk through it.

    Nah, doesn't need re-work, needs to be finished. I have actually got a pretty nice FAQ-type thing going on the NetherGate wiki page that talks about this kind of thing, now. Mainly what to expect to be working and what not- and auto-creation of portals is at the top of the list :D

    Yes, yes, I've written the first plugin that creates art! That's very beautiful.

    It shouldn't be creating them at all right now, of course- but pretty nonetheless.

    Thanks! If you want another zip with bug fixes, I can put one up- but really the live version should be working just as well as this one will when I'm done, minus (possibly) Essentials support. I really haven't made any actual improvements from 0.53 yet :)
     
  19. Offline

    Greylocke

    I think that once portal linking is in place, then a lot of these problems go away. (imo)Right now we pop in at different places and lay obsidian all over because the NG logic is fighting with bukkit issues and we end up someplace else just a little off from where we should, so a new portal is created or a new platform is laid out or another piece of hillside is cleared.

    But if portal [global.portal.portalid]=1 just put us at ([global.portal.landingzonex],[global.portal.landingzoney],[global.portal.landingzonez]) where [global.portal.portalid]=2, for the simple reason that [global.portal.link]='2' where [global.portal.portalid]='1', then things aren't so messy anymore. In fact, it is all very mechanical.

    I'm looking forward to that day.
     
  20. Offline

    NathanWolf

    Hm- it's not creating abstract art/portals for me.

    Is it possible that you had "/su" on? Maybe you turned it on to use "/nether world create", and didn't turn it back off?

    If you leave that on, NG will auto-create portals for you, even though it's supposed to be off by default. Kind of an unfortunate side-effect of me using permissions for that- I guess I could just comment out the code again :)

    Anyway, I'm looking into the other stuff now- but as I said, I'm really not planning on releasing this soon, I guess unless it fixes these Essentials issues.
    [MERGETIME="1300156706"][/MERGETIME]
    God, me too :(

    I'm really sorry about how long it's taken to get there- permissions stuff and Real Life stuff sorta got in the way. And, now, of course, I'm refactoring instead of moving forward.... I'm hoping it'll be worth it in the end.

    My goal is to make NetherGate as solid as possible- I don't want to release something that's "almost right", in terms of these remaining features. I'd rather NG just be a one-way "sometimes random" portalling plugin until I can get it working the way I want it.
    [MERGETIME="1300157779"][/MERGETIME]
    By the way, I know that you were probably just typing here, but you're not far off from reality there :D

    If you have NetherGate installed, have you looked at the portal table in nether.db? It's basically like nether.portal.id=23, and then nether.portal.target=23 from another portal references that one. Each portal has a fixed location, so once the pair is set up, I just use that instead of player location and searching algorithms- everything suddenly becomes much simpler.

    Anyway, that's the idea- it is all very close, and if you look at the data now you should actually see a portal network- though it'll probably be a screwy one, since it's broken and keeps re-creating portals (potentially).
     
  21. Offline

    Magik

    ahhhh yes i had /su on still! i didn't know it would have that side effect heh

    i will get back to you on essentials compatability in a few


    edit:

    yeah still seems like issues with Essentials conflicting.... I put essentials back in, and I can't go to the nether at all. I have the example permissions. yml where NetherGate: commands: nether: world: go: true is set for the default group, but when I type /nether world go nether - it says "Going to world nether", but doesn't do anything. And the Essentials command /world nether does seem to move me between the worlds...
     
    NathanWolf likes this.
  22. Offline

    NathanWolf

    Yeeeaaah... neither did I til I thought about it!

    I'm now rethinking the whole "permissions as config" thing, but... really, you shouldn't leave su on. But I guess I don't really want to enforce that, so I'm not sure what to do about that :)

    Thanks for clearing up that little mystery, anyway ;)

    Ahhhh.... bother :(

    Oh, well- I'll just keep working on this code refactor, then, and worry about Essentials later- I'm out of ideas, for now.

    Thanks very much for trying that out for me! I got "sidetracked" with coding and decided not to worry about Essentials for now :D
    [MERGETIME="1300161868"][/MERGETIME]
    Also, if you want to keep using that version (for some reason), I updated elBukkit.zip- it now works for me on a clean startup, creating a nether world and targeting the two worlds properly.

    And, speaking of this new version (which will surely be NG 0.54 when it's ready for release)- there are actually a few nice changes in there:

    • I added "nether world load <worldname>" - it's only really useful for "loading" a world into NetherGate that some other plugin has created. It *might* be worth trying this out with Essentials' nether world...
    • I removed the auto "daisy chain" code. Now, only the first auto-created nether world will be bound (looped to the normal world). The rest of the worlds you create, it's up to you to hook them up :)
    Hm, there may be more, but probably not- these were sort of random adds I did while trying to debug/fix this Essentials stuff.
     
  23. Offline

    Bob_Sack

    This problem probably wouldn't even exist if the author of essentials didn't combine all the plugins into the main jar like he/she did. I much prefer them all be optional, but what can you do =\

    If only General wasn't so.. feature-less in comparison to it. That makes it... "essential" you use essentials =p
     
  24. Offline

    Corupdead

    is there any way you can make this not require bukkit? I honestly cannot find a download for bukkit. (that may sound stupid..)
     
  25. Offline

    Bob_Sack

    It doesn't sound stupid. The devs do a wonderful job of hiding it. Click on "Documentation" at the top of the page.
     
  26. Offline

    NathanWolf

    Yeah- I agree!

    Ok.... So.... want to start a list of what you really need from Essentials?

    There are already features of nethergate (home, spawn) that would do well to live in an essentials-type plugin. I'm seriously considering just making my own "general utilities" plugin, except really trying to keep it general :)

    I imagine there are some cool/complex things Essentials does that you're interested in, though- I really don't understand why you can't leave out the nether bits. I thought Essentials was all modular, and stuff?
    [MERGETIME="1300200494"][/MERGETIME]
    It's not stupid, because it's not technically legal to post a download link to bukkit, yet. We certainly hope it will be one day, and hopefully soon (like, before MC goes open source would be nice....)

    Anyway, the place I go for builds is here:

    ci.bukkit.org

    This is the automatic build server for the Bukkit team- it has CraftBukkit, as well as a couple of "official" plugins.

    If you click on the CraftBukkit project, you'll see a list on the left- those are build numbers, like I have in my thread title. Look for one with a star- those are the Recommended Builds. Click on the top one, then on "artifacts", and you should see a jar download link.

    Good luck! I need to put as much of this as... I feel comfortable doing, I guess, in my wiki pages.
    [MERGETIME="1300200804"][/MERGETIME]
    Heh- yah, as you can imagine they get a lot of flak for this, but it's really not their fault.

    Disclaimer: I am not a bukkit dev, this is all conjecture on my part (really I just read what they post to the forums...)

    And they have not posted about this in quite a long while. But, last I remember, they were in talks with Mojang, who are generally very open to MC being modded, and seem to want to help Bukkit. However, there are legal issues in play since Bukkit actually has MC's source code inside of it.

    This is a really complex issue, and obviously we all hope it doesn't mean that Bukkit was already dead before it even started.... but without some sort of real consent from Mojang to essentially re-distribute their binary data (decompiled, modified, and then recompiled- but still very arguably their IP!), Bukkit may never get an official download link.

    I'm pretty sure the devs would love for more people to be using bukkit, and for it to be easier to find. I'm sure they'd love a giant green "Download" button on the bukkit.org home page. And, for that matter, I'm sure that whatever Fill is supposed to end up doing probably relies on a solution to this issue- since it will be essentially distributing Bukkit automatically, if I've got the idea right, there. Maybe not.
     
  27. Offline

    IcyEx

    Hey can someone help me pls? :D
    I just installed this plugin and created a portal
    for the nether... but when i go through it
    i just walk trough it und come out on the other
    side.
    what am i doing wrong?
    can someone help me pls?

    thx
     
  28. Offline

    NathanWolf

    Essentials?
     
  29. Offline

    IcyEx

    what is with essentials?
    i got that plugin too ^^
     
  30. Offline

    NathanWolf

    It's breaks NetherGate, unfortunately, is what's with it- that's why I asked.

    Going to go add that at the very top of the wiki, and probably this thread as well.
     
  31. Offline

    Liquidmantis

    I just want to through out a huge thanks to NathanWolf. The amount of support you provide this plugin and your responses are absolutely astounding.

    [Edit] Yeah, Essentials causes wonky issues. My users were able to use NetherGate but it did nothing for me at all as an admin. I didn't even realize that was the problem until one of my users started talking about his Nether basecamp from his home Nethergate. :D I've now dumped Essentials since it's more KitchenSink than Essentials.
    For some reason I still get no response whatsoever to /nether commands but they work great in the server console.
     

Share This Page