[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. Offline

    Drat333

    This looks quite interesting. But, for what purpose would there be for creating an instance? (Not criticizing, I just can't come up with anything)
     
  3. Offline

    den

    I could see puzzle maps or large dungeon maps working well with this
     
  4. Offline

    chronopolis

    Mad dungeons y0
     
  5. Offline

    xzKinGzxBuRnzx

    2011-05-29 08:44:11 [INFO] [BootToInstance] BootToInstance 0.1 loading
    2011-05-29 08:44:11 [INFO] [BootToInstance] Permission system not detected, defaulting to OP
    2011-05-29 08:44:11 [SEVERE] Error occurred while enabling BootToInstance v0.1 (Is it up to date?): null
    java.lang.NullPointerException
    at me.tehbeard.BootToInstance.BootToInstanceCore.loadConfig(BootToInstanceCore.java:113)
    at me.tehbeard.BootToInstance.BootToInstanceCore.onEnable(BootToInstanceCore.java:83)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:125)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:750)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:253)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:132)
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:110)
    at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:218)
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:205)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:145)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:265)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:394)

    Am I doing something wrong here?
     
  6. Hmm, what build are you running this on? Because of the way I have to do the worlds it's compiled against craftbukkit, and seems to run fine on build 803.

    Think I found the issue, I forgot a null check when loading the instances config, so if none existed it would throw an error. Fixed and re uploaded
     
  7. Offline

    Avous

    @tehbeard

    how much will this lag my server and is therea way to save personal worlds? like housing?

    For example say you hit a button on a house in a city then you get a list of commands like /visit, /home, /rent, or /upkeep then for a cost of iconomy money/upkeep you can purchase a small limited slice of land in a instance which you could make into a home.. personalized instances.

    and instead of creating a new world for every player for every house there is. just delete the old home if they move to a old spot and each city will have a different look around that personalized world.

    of course this would probably eat up way too much memory even for say a 50 x 50 x 50 slice of land unless you could think of a way to despawn the world when its not in use.
     
  8. Offline

    Andre_9796

    [experimental] is no official category
     
  9. @andre_9796 I know, but it's what category this plugin fits best into,even if it isn't official.

    @Avous
    An instance should take up about as much CPU/RAM/bandwidth as running a normal (non instanced) world alongside the ones you run at the moment. This means for the moment running alot of them will cause lag, as would running alot of non-instanced worlds, the only difference I can see is when you save, since instances have dummy save methods they will "save" near instantly.

    I know there are plans for CraftBukkit to go Multi core soon, these will give a dramatic boost to both CB and BTI.
    (as an example, the server I moderate on has 16 cores (8 real + HyperThreading). At the moment only one core can do the main work of of simulating about 15 worlds, and does so fairly well, memory leaks not withstanding. Once there's the ability to spin world's off to different cores the total possible worlds rises quite far.

    That said, there's no defined number, it depends very much on your hardware, software, plugins etc.


    Personalised housing? I like the sound of that alot. Saving only the house may be possible, If I can use WorldEdit/Guard to cuboid the area for the home, save it, then restore the home when they visit, it should work.

    "and instead of creating a new world for every player for every house there is. just delete the old home if they move to a old spot and each city will have a different look around that personalized world."
    A bit more clarity in what you meant please?

    There is a way to despawn a world, currently it's a manual process (/shutdown world-name world-to-push-players-to) but I do plan to have it automatic at some point.

    I may take FalseBook's approach and have BTI as the core plugin, and then add the extras such as instanced housing, dungeon running as mini-plugins that use BTI.

    The main issue for the moment is testing, seeing how it behaves with other plugins, what works, what doesn't. Features are a nice idea but I will put bug fixing above them for now.
     
  10. Offline

    xzKinGzxBuRnzx

    Yeah it seems to be working now. Thanks! :D gonna give it a try now.
     
  11. Offline

    Avous

    @tehbeard

    I mean give the basic layout of a area to a player same for every player that buys a house instance however they could change the plot type to say tundra or desert or forest or island lol based on where they bought it and everyones house in the area they bought it would look exactly alike and have the same layout mmmm I'm typing this on my blackberry so sorry if it looks off
     
  12. Offline

    Andre_9796

    @tehbeard yah but it wont be moved to releases with that category
     
  13. I don't need it moved to releases yet, when it's a presentable, usable plugin then yes, i'll remove the experimental,

    @Avous I think I get what you mean, I'll have a look into it.
     
  14. Offline

    BangL

    Amazing! Best plugin idea i've ever read about. I would love to use it for a dungeon instance system like in WoW.
    But this would need additional monster-programming and reward functionallity, if u know what i mean :)
     
  15. New version uploaded, you can now define portals to take you to other worlds. Not sure of the lag this causes at the moment, but I may have to throw spinning up and reloads onto a separate thread.
    DELETE THE config.yml UNDER plugins/BootToInstance/ OR YOU WILL GET ERRORS.
    I'll add version numbers to the config in the next version to stop this happening.

    quick guide, will make a better one later: FOR NAMES USE ONE WORD
    1. - have a folder containing the world you want to run, that isn't being used by a world.
    2. - create an instance.
    3. - type /bti-instance start <instance-name> <filename> <alias>
    4. - create the portal.
    5. - select two points using left/right click with a slimeball.
    6. - type /bti-portal create <portal-name> <instance-name>
    7. - set the portals location to spit you out at.
    8. - type /bti-portal location <portal-name> <x> <y> <z>
    9. - jump into portal
    10. - ?
    11. - Profit.
    Video tutorial will be done soon, new version can be found in download link in first post.
     
  16. Offline

    Plague

    version has to be in the title
    latest recommended CB tested has to be there too
    and changelog has to show two latest versions without a spoiler
     
  17. Offline

    masteroftime

    Cool. Im just working on a plugin wich allows you to create WoW like dungeons and if I could combine it with this it would relly be awesome. I will definitely look into this. Have you some info on the API wich you are planning that you are able to give to me?
     
    tehbeard likes this.
  18. By all means do so, it means less work for me :)
    As for an API, I plan on one in a later version. For now it's getting instances and portals to load from config and just some house keeping routines for the next few versions.

    If you have ideas for what you need access to with the plugin in terms of API, by all means post here and I'll try to be as accommodating as possible.
     
  19. Offline

    Meldanor

    Looks very interesting and I'm speculating that this will be quite more interesting in the future, when Mojan released his "Adventure" mode.
     
  20. Offline

    Plague

  21. Offline

    Greylocke

    ... would love to test this, but the instructions are missing some important things like:
    where to place the master instance file?
    how to stop or reload an instance?

    I've tried it a couple different ways, but bti seems to be creating a new world, not copying the master instance.

    I don't need a video tutorial or anything but a basic walkthru and command list would really help!
     
  22. Offline

    hypershadow66

    Well, I love the idea and would love to use it! But I use Multiverse and I would rather keep that :\ Please update me when/if compatability gets fixed!
     
  23. the incompatibility is only in using /mvtp, this has been solved with the portal system I wrote for it. I plan a release for today to showcase the portal system.
     
  24. Offline

    BangL

    The portal system is a bit bugged yet, u get kicked for "moving too fast"
     
  25. could be todo with teleporting from inside the onmove event, I believe I fixed it in the next release, just finishing saving portals to config.
     
  26. Offline

    BangL

    nice
     
  27. Offline

    Greylocke

    I get sent successfully. Maybe you've got some other anti-cheat plugin that is flagging the teleport?
     
  28. Offline

    BangL


    hmmm.. "anticheat" is not on my test server, but maybe "essentials" :S
    anyways... i wont deactivate it when i use it productive, so it needs a fix.
     
  29. seem to have fixed it, wrestling with config to save portals to files, will upload once complete.

    Edit: new version uploaded, Editor spamming 's into config example
     
  30. Offline

    BangL

    Wow man... this plugin is gonna be essential for me, when these steps are finished:
    • A party system for multiple people going into an instance
    • Cap on total instances
    • Ability to leave/unload
    I would like to help, but i got no java experience yet :S
    Anyways... i started working on a plugin to trigger mob spawnings by walking on marked blocks, to get experience and to combine it later with this one. :)
     

Share This Page