[DEV/MISC] BootToInstance 0.2.4 - instanced worlds, Now with more craftbukkit overrides! [1000]

Discussion in 'Inactive/Unsupported Plugins' started by tehbeard, May 28, 2011.

  1. BootToInstance
    Version: 0.2.4
    The plugin is on hold for the foreseeable future, a serious flaw has been found in the way MC and bukkit work.

    since Mc is single threaded, loading up extra worlds kills performance. I don't have time to work on a solution, so the code is here for anyone to pick up.



    Description:
    BootToInstance is an plugin, designed to create instances in Minecraft. It is quite new, but is growing a little each day to suit the needs of the community.

    The current release is to test the waters for demand for this, as well as get a wider view of possible bugs and wanted features.

    What is an instance?
    An instance is a self contained copy of a world, that can be modified by players, torn up, destroyed, and then left. It can then be reverted (auto cleanup when players leave is planned) to it's original state for the next raiding party. BootToInstance can spoof a world, meaning you only need to config settings for that world and they should be applied to instanced worlds as well.

    Features:
    • Allows creating a self contained instance of a world, that does not require clean up afterwards
    • Can boot Multiple Instances from a single source folder.
    • Portals to take you to an instance.
    • Groups, Raid epic dungeons together!
    Limitations:


    some plugins may not work with BootToInstance,
    Because instances are spun up on the fly, MultiVerse will not allow portals and /mvtp to them. However, regular TP's will work if you use the instances ID (instancename_instancenumber, so 404 would be 404_0, 404_1 etc)

    However, I know that LWC and BorderGuard work, if you find anymore plugins that do/don't work let me know.

    You cannot instance from a world file that is loaded as a normal world. This is down to the session.lock file, so if you want a world to be editable and have instanced versions, you need two copies of the world (one for editing, one to be read by instances).

    how to use the commands:
    Colors screwed up, cba to wipe post and redo.
    /Command Action args
    /bti-portal
    actions:
    create
    Name Instance - name of portal, Instance name
    Location
    Portal X Y Z - Portal name, coords to enter in instance.

    /bti-group
    make - makes a group you own
    invite
    player - player name to invite
    accept - Accept an invite
    leave - leave
    remove
    player - remove a player
    clear - clears group

    /bti-exit - exit an instance.
    Download:
    Version 0.2.4 - RB1000 (MC1.7.3)
    Version 0.2.3- RB 860 (MC 1.6.6)


    Comments, feedback, (helpful) bug reports and ideas welcome!

    Planned Features
    Show Spoiler
    Show Spoiler
    Show Spoiler

    • portals to take people to Instances (or MV integration)
    • A party system for multiple people going into an instance Still stuff to add to it, per-instance group limits n such.
    • Reload world on last player leaving. Sorta done, need options with it
    • Cap on total instances
    • Cap per instance.
    • Personalised homes? - Credit to Avous.
    • API for other plugins.
    • Hibernate worlds to conserve CPU.

    ChangeLog

    Version 0.2.4
    • Various fixes for 1.7.3/RB1000
    • Maps won't work persist on Instanced worlds. This is because you cannot start worlds with the same UUID, thus we make each one be random. This will hopefully be fixed soon.
    • Added a cleanup routine, set to run every 5 minutes and unload all unused instance worlds.
    • There is a possible issue with RB1000 and the portal detection code, I may need to un-optimize to solve the issue. In the mean time I've left the debug message in.
    Version 0.2.3
    • Upgraded to RB860
    • Added groups
    • added /bti-exit command for leaving instances w/o logging out.
    Show Spoiler

    Version 0.2.2
    • A few bug fixes
    • added portal loading and saving.
    Version 0.2.1

    • Built for new RB 818, lot of internal changes to make it more expandable later
    Version 0.2
    • Added portals to worlds, changed commands.
    Version 0.1

    • Inital Release



    How to to help me.
    Bug reports are the obvious thing. Though confirmation of working/not working with plugins is greatly appreciated.

    Config file
    In lieu of a proper tutorial (Coming soon®), here is an example of the config file, with # comments about each part.
    In lieu of bukkit forum software spamming the code panel with size tags, a link to the text file on github.

    http://cloud.github.com/downloads/tehbeard/BootToInstance/config example.txt
     
    mattdh, Meldanor and thecoolwolf like this.
  2. hmm, i'll look into bukkit's bugs, doesn't sound like a simple world Teleport should do that.
     
  3. Offline

    link2110

    the hacking bug only should appear if in your server config files you have
    Code:
    Allow-flight:false
    
    if you set to true, you shouldnt get that hacking error. Also the built in fly protection kinda sucks. It only detects if you're flying IF you hover for a certain time. If you want to use a no-fly plugin, check out NoCheat, it works so much better
     
  4. I know exactly what to use this for! A mining world that resets itself, with allowed TNT mining :D
     
  5. Offline

    MinasApátridas

    Hey, just a little question. For the command /bti-portal location, can you make, instead of writing X Y Z coordinates, get the current location of the player and extract his X Y Z Yaw Pitch? Like setspawn or sethome plugins. So a player enters looking at something, and we don't need to write down corrdinates for writing them later.

    Thank you!!
     
  6. Offline

    goldenquent

    can't config with Permissions?
     
  7. Working on adding permissions, wanted the base work done before I did that to avoid hodge podgeing it
     
  8. Offline

    loganwm

    I just wanted to add that I installed this plugin on my server last night, and so far I'm pretty blown away with how neat it is. The other server admins on my server are looking to setup an RPG plugin at some point in the future, and this sort of instancing is definitely something fantastic.

    Out of curiosity, is this project open source? I'd consider lending a hand if the source is available. My java is a bit rusty, but I get re-acquainted quickly.
     
  9. Thank you very much :)

    It's over at https://github.com/tehbeard/BootToInstance, I update it usually each time I add a feature or bug fix. Your welcome to fork it if you think of something awesome to add.
     
  10. Offline

    ArcFox

    How on earth do I use this??? :confused: I'm sitting here for almost an hour trying to figure out HOW exactly this works. I have no fucking idea.. Sry, I'm a bit in rage. Can you PLEASE add a how-to-for-dummies? Like a step-by-step tutorial on what commands to use? When I type /bti-portal in-game he tells me that I can type create or location after it. When I write /bti-portal create test123 he says nothing at all. Nothing in console, nothing in-game.

    I tried the commands but I didn't get how you're supposed to use them. Tried all combinations that came to my mind but nothing worked. I tried the .yml that you provide in the thread but when I start the server the pluing OVERWRITES it :confused: No idea what I'm doing wrong.

    FINALLY, I got it to work. More or less. Maybe less...

    /bti-exit doesn't work for me... I finally managed to get the portal to work and he loads an instance of the world correctly. But when I try to exit the instance it doesn't work. When I type /bti-exit the plugin ALSO writes /bti-exit into the chat and nothing happens. In the console it says "[INFO] [BootToInstance] WTF how we get here?". Something ain't right here..

    Edit:
    And is there a way to log into the console when the instance is unloaded? I have no idea if the instance is still in the RAM / CPU when I disconnect or die so I can get out of it and back to my normal world again.

    2. Edit:
    @tehbeard
    Found another bug. Or at least an incompability with another plugin. I use Multiinv on my server that allows me to have multiple inventories so every world can have its own inventory. When I start an instance my inventory gets reset (everything correct) and when I use a command to tp out of the instance I get my old inventory back (everything correct). If I however simply disconnect in the instance I KEEP the inventory of the instance and DON'T get my original inventory back despite spawning in the normal world :( :( :(

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 16, 2016
  11. The instances don't unload yet in the public version, thats in next release, i'd put code in and then RB860 gave an easy to use method and I raged so hard about all that work for nothing.

    I really need to get a tutorial up, thanks for reminding me, i'll try on my laptop tomorrow, otherwise we're waiting till my desktop is back up.

    MultiInv bug, damm, probably caused because I have to manually TP the player out when they exit which might not trigger MultiInv. I'll look into seeing if there is someway to trigger MultiInv before this. Thanks for the bug report :)

    I need to check I got permissions on everything correctly, then we should have a new release. Hopefully without multiinv bugs.
     
  12. Offline

    ArcFox

    @tehbeard
    Yay! :D I really look forward to using this plugin! It's a great idea.

    And don't forget the /bti-exit bug! :( You didn't mention it in your reply^^
     
  13. bti-exit bug was a problem in my placement of it, it was nested inside another commands {} so it wouldn't exit.

    Looking at multiInv now, then fixing for the new RB935
     
  14. Offline

    Rawbott

    I have great hope for this plugin, but I can't quite use it for what I want yet.

    I wanted to create a WoW style battlegrounds system, where my players could type "/whatever <Map> [team]" and be queued up for a battlegrounds match in a destructible arena world. Your plugin is the closest thing I found to this, and I can adapt it to my purposes with only two added bits of functionality. I need:

    1. Public Instances - When players without a group use a portal, place them in the same instance as other players without a group (even though they didn't join at the same time). If you want to instance solo, make your own group.

    2. Configurable Respawning - let me choose not to kick players from the instance when they die, as this makes it infeasible to use other spawning plugins.

    Also: It may just be the lack of a tutorial, but it seemed to me and my roommate that your commands weren't structured well. We spent more than an hour trying to figure it out. I think this could mostly be alleviated by a standard "/plugin command <requiredArgument> [optional]" format, and matching help message in your "plugin.yml". Not a biggie now, but something to think about.

    Aside those things, permissions support, and that Multi-Inv bug (I love that plugin) I think this is exactly what I want for my server. I'm very grateful for your work so far, and I hope my suggestions can help you make it better!
     
  15. MultiInv is sorted, I'm wrestling with getting permissions setup on my laptops local server to test that.

    The other things you've mentioned, public instances, battlegrounds will likely be a bolt on plugin after the core is finished.

    I really need to get that tutorial out the door don't I? I'll get onto it after permissions testing and before next release.

    UPDATE:
    Permissions seems to be working, you can control which worlds a player is allowed to go to, alongside who can create portals.
    Those with OP status override permissions.
     
  16. Offline

    sayton12

    does this work on #953
     
  17. Offline

    codyteen

    i need you to update date this for my server
     
  18. Offline

    thedjshow

    Could you please make a video on this plugin =)
     
  19. Sorry guys, been busy past week on an internship and waiting for craftbukkit's code to settle before updating it.
    Looking to get new version out for latest RB this weekend. I'll try a video but I have to find a time when everyone at home is being quiet to do so :p
     
  20. Offline

    sayton12

    Nice, I look forward to trying the new update when its ready. Keep up the good work!
     
  21. Offline

    Wahrheit

    I need something like this that works for just regions, and also allows a setting for whether they can bring their own inventory or use what's provided.

    We plan on having massive numbers of dungeons within one world.
     
  22. Offline

    GmK

    @tehbeard

    I see activity on github (slightly oldish) - is there a version with those latest commits? Would love to give this a run!
     
  23. Sorry, i've had not alot of time the past two weeks to work on this, there is a new version of it for the latest RB with the option to periodically clear empty instances, but I haven't had the chance to run tests on it yet. The weekend is here though so I should have time to run tests and release a new version.


    RB 1000 breaks BootToInstance, need to look at how to bypass the unnessecary security on duplicate worlds.

    Edit: Should have a fix, though I think it breaks maps, gonna test and hopefully have a release out tonight.
     
  24. 0.2.4 is out for RB1000.
    This is more a quick fix release then anything else. Hopefully regular service will resume in two weeks.

    in the meantime I make a plea for three things, bug reports, Improvements, and most importantly compatible plugins
     
  25. Offline

    Master_Rudik

    This plugin could also have implementation as an anti-grief plugin:

    Have an instance of a world set up so that a certain group (e.g. "Griefer" group) is automatically sent to it at login instead of the default world, and disallow that group from teleporting to other worlds. Provide a command to send a person to that group, and thus the instance of the other world. Now, have that instance of the world automatically refresh each time either it is empty or the server restarts.

    Now, you have a world that griefers can be sent to instead of banning, and they will hardly even know that they are in a different world. They can grief as much as they want, be sneaky, and then leave. Coming back later, they will find a fresh world to grief.

    If you can implement that, I (and probably many server admins and possibly some griefers) would love you forever.
     
  26. Offline

    bothersome

    I cannot seem to get this to work. I set up portals and a world with a dungeon I want players to be able to fight thru, loot and leave.

    I have a portal set up in a grave that seems to work, except that it tells me "The instance this portal leads to does not exist!"

    I made a copy of the dungeon world and deleted the session.lock file. Am I putting the world in the wrong place? does it go in another folder?

    Any help is appreciated.
     
  27. Offline

    phatchico

    I am very interested in this plugin but am confused as all get out on how to implement it...the help is very general and does not offer any helpful errors, any help would be greatly appreciated. Thanks.
     
  28. Offline

    phatchico

    I guess my first big question is where do I put the instance/ folder. Does it go in the plugin folder? or just in the primary server folder? The file within it...is it just the .dat file for the instance? The entire world folder for said instance?
     
  29. Offline

    G1R Productions

    I have no idea on how to use this plugin, perhaps someone should make a video on how to create instances and such.
     
  30. Offline

    Phant0mX

    I'm going to try this out, as it is just what I was looking for and will make a video when I've got it working. I'll try to get it done tomorrow and will post the link here.

    @tehbeard - Is there a rudimentary api for this yet? I'd love to take a shot at writing a compatible plugin. Also does it support inheriting permissions from the source world?

    Ok, testing it out now and I have come across the following issues:

    Some kind of incompatibility with OKB3 is throwing this error when a player uses the command "/bti-exit"

    Show Spoiler

    2011-08-08 21:12:41 [SEVERE] Could not pass event PLAYER_TELEPORT to OKB3
    java.lang.NullPointerException
    at me.kalmanolah.okb3.OKPlayerListener.onPlayerTeleport(OKPlayerListener.java:18)
    at org.bukkit.plugin.java.JavaPluginLoader$8.execute(JavaPluginLoader.java:293)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:332)
    at org.bukkit.craftbukkit.entity.CraftPlayer.teleport(CraftPlayer.java:216)
    at me.tehbeard.BootToInstance.BootToInstanceCore.onCommand(BootToInstanceCore.java:435)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:129)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:320)
    at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:713)
    at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:677)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:670)
    at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:85)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    2011-08-08 21:12:41 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'bti-exit' in plugin BootToInstance v0.2.4
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:37)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:129)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:320)
    at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:713)
    at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:677)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:670)
    at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:85)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Caused by: java.lang.NullPointerException
    at org.bukkit.craftbukkit.entity.CraftPlayer.teleport(CraftPlayer.java:227)
    at me.tehbeard.BootToInstance.BootToInstanceCore.onCommand(BootToInstanceCore.java:435)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
    ... 12 more


    I know it's an OKB3 error, not a BTI error, but I'm not sure what might be causing it since OKB3 has worked fine with any other PLAYER_TELEPORT events. Does your plugin modify the event in some way I'm not seeing?

    Also I am a little confused what happens when the player leaves the instance and instance cleanup. I thought if no players are in the instance the cleanup event would mark it to be deleted after 5 minutes, but tests keep sending me to the same instance I was in previously rather then a new instance.

    I am still planning on making a tutorial video once I have everything sorted out, and I am planning on writing a area/block trigger placement and event scripting plugin that I would really like to make compatible with this.

    Any advice on keeping plugins compatible with world instances to pass on to other devs?

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

    Zalastri

    Does this work with CB 1046+ or Multiverse 2? Very interested in using it.

    EDIT: Seems to load just fine on the above. It'd be nice if it had support for Heroes parties, as the two features are highly redundant together, and Heroes is the PERFECT kind of mod to take advantage of this plugin.
     

Share This Page