[MECH] Elevators [BukkitDev]

Discussion in 'Archived: Plugin Releases' started by Cybran, Jan 27, 2011.

  1. Offline

    Cybran

    [​IMG]

    The plugin will be continued at dev.bukkit.org!
    Want to help? Sign up as an alpha- or beta-tester!


    What this plugin does:

    It creates vertical moving elevators, which can be controlled by redstone-powered blocks.

    Features (open)

    • Creating elevators with an individual size (square or rectangle shape).
    • Floor-management: define your own floors with their own names, being able to call an elevator on every floor by – per example – pressing a button.
    • Movement-triggers: control the elevator with redstone circuits or buttons or any other redstone-powered block!
    • Elevator movement-controls: have different buttons for moving the elevator up and down, skip floors by pressing a control button several times.
    • Command-queuing: the elevator will move to the different floors one after the other if it gets more than one command at the same time.
    • Build on the elevator whatever you want (nearly ;))
    • Use redstone outputs to link the elevator to iron doors or more complex circuits.
    • Connect the elevator to your minecart system!
    • Use the elevator as something else, like a lava door.
    • Build automtically opening/closing glass doors around or on your elevator!
    • Protect your elevator with a password or user restriction.
    • Permissions support!

    How to install (open)

    • The server mod:
      Just copy the Elevators.jar into your plugins/ folder. That's it. You can modify the config later (See section Tutorials>Configuration).
    • ???

    FAQ (open)

    • Q: I'm completely new to this plugin! What shall I do?
      A: First, install the mod (see How to install), then you can read the basic tutorials in the tutorial section below.
    • Q: I'm sick of using buttons all the time to control the elevator! I want to include my redstone circuits!
      A: You don't have to use buttons! You can right-click any type of redstone-powered block! The buttons are just the easiest way.
    • Q: I want to build several buttons or other blocks for the SAME floor! How to do it?
      A: Have a look at the "direct" command. It links other blocks to an already existing floor.
    • Q: I try to build a lava door, but the lava is transported with the elevator! How can I let displace the lava by the elevator?
      A: At first, build the elevator like it should be later. Then, use the command /elev lock. Now your elevator will not grab any blocks or fluids placed later on it.
    • Q: Is there a size limitation for the elevator's shape?
      A: Yes. Normally, there is a maximum for the area of 25 blocks. But: you can change this limitation in the config.

    Command usage & Permissions (open)

    [...] = optional parameter. ...|... = select ONE of the values, they all mean the same. <...> = put your own values here.

    /elevators|elevator|elev <command from the list below>

    The basic commands:
    • help|? - shows the commands.
    • permission|permissions - shows your current permission level.
    • create - creates a new elevator at your current position.
    • remove - removes an existing elevator from your current position.
    • call|floor <Floorname> - creates a new floor with the given Floorname.
    • up - creates a new UpBlock, right-click to select block after command.
    • down - creates a new DownBlock, right-click to select block after command.
    • go|direct [<Floorname>] - creates a new link to the given floor or the nearest. Toggled by redstone input. Right-click a block.
    • redstoneout [<Floorname>] - creates a redstoneoutput, right-click to select the output block after. Has to be a lever.
    • glassdoor [<Floorname>] - Type command and place glass blocks. A door will be created to the given floor or the nearest. Use /elev finish to finish and disable glass block listener.
    • glassremove [<Floorname>] - Removes all glass blocks linked to the given floor or from the cabin when no floor is specified.
    • finish - Finishes an action (like glassdoor placement).
    • info - creates debugging info file. CONSOLE ONLY.
    • lock - locks the cabin blocks to stop updating before every movement.
    The more advanced ones:
    • help|? - shows the commands.
    • permission|permissions - shows your current permission level.
    • create [password <Password>] [users <Username1> <Username2> <UsernameN>]- creates a new elevator at your current position, optional with password or user whitelist.
    • remove - removes an existing elevator from your current position.
    • call|floor <Floorname> [password <Password>] [users <Username1> <Username2> <UsernameN>] - creates a new floor with the given Floorname, optional with password or user whitelist.
    • up - creates a new UpBlock, right-click to select block after command.
    • down - creates a new DownBlock, right-click to select block after command.
    • go|direct [<Floorname>] - creates a new link to the given floor or the nearest. Toggled by redstone input. Right-click a block.
    • redstoneout [<Floorname>] - creates a redstoneoutput, right-click to select the output block after. Has to be a lever.
    • glassdoor [<Floorname>] [direction <DirectionIdentifier>] - Type command and place glass blocks. A door will be created to the given floor or the nearest. Use /elev finish to finish and disable glass block listener. You can use a DirectionIdentifier (left,right,up,down,splitH,splitV) to set the opening direction manually.
    • glassremove [<Floorname>] - Removes all glass blocks linked to the given floor or from the cabin when no floor is specified.
    • finish - Finishes an action (like glassdoor placement).
    • info - creates debugging info file. CONSOLE ONLY.
    • pw|password [<Floorname>] [password <Password>] - Overrides password protection for the given floor or the whole elevator.
    • user [<Floorname>] [users <Username1> <Username2> <UsernameN>] - Overrides user whitelist for the given floor or the whole elevator.
    • give [<Username>] - changes the owner of the elevator. Once changed, a reset is not possible.
    • lock - locks the cabin blocks to stop updating before every movement.
    Permission nodes:
    • elevators.builder - basic permission level, user can set up elevators.
    • elevators.advancedbuilder - advanced permission level, user can protect elevators with password / user list.
    • elevators.operator - ignores owner, passwords and user restrictions, can modify everything.

    Tutorials (open)

    Basic setup:
    • Prepare a shaft – size can be between 1x1 up to 5x5. There has to be air in the whole shaft(means also no ladders and no torches directly on the wall).
    • Build a plain of any block type in your shaft as the elevator’s ground. (I would recommend to use a block type that is not placed anywhere in the shaft again with the same shape.)
    • Stand on the ground while typing /elevator create
    • A new floor and a new “CallBlock” (to call the elevator later) are created simultaneously by first typing /elevator call <Floorname> and then right-clicking on a (already existing!!) button. The elevator will halt 2 stones below this block
    • You have to create Up- and DownBlocks (to control the elevator) on every floor OR (better) inside the elevator. Type /elevator up or /elevator down , then right-click on a button (again the buttons have to be created BEFORE).
    • Create as many floors as you want. Besides: the control-blocks can be up to 2 blocks away from the elevator
    • Now you are ready to use the elevator!
    • If you want to remove floors or control-blocks, simply destroy the blocks.
    • If you want to remove the whole elevator, stand nearby and type /elevator remove.
    Configuration:
    • After the first server startup with the plugin v1.3+, a new file named Configuration.txt is created in plugins\Elevators\
    • Feel free to modify the values in there. But keep to the given format.
    • restart the server (or use /reload command) to apply the changes.
    Enhanced redstone:
    • If you want, you can extend your calling mechanism, per example by using stone plates connected to redstone wire.
    • To make your elevator moving to a specific floor, type /elevator direct <Floorname> and right-click any redstone wire or button or stone plate...
    • You can also use /elev direct WITHOUT the floorname. This will lead to the next floor in range.
    • If you want, you can add a redstone output to the elevator. Build a LEVER near to the elevator, then type /elev redstoneout and right-click the lever. Connect the lever to your circuit with redstone wire.
    Glass doors for your elevator:
    • Type /elev glassdoor [<Floorname>] [direction <DirectionIdentifier>] to start.
    • You can use a DirectionIdentifier (left,right,up,down,splitH,splitV) to set the opening direction manually. left and right are seen from outside the elevator. splitH and splitV will let the door split horizontally or vertically from the center.
    • Now build glass blocks around the elevator or on the elevator. Use any shape you want.
    • Type /elev finish to stop adding blocks as doors.
    • Call the elevator again to the floor where you built the door. Your created door opens.
    • The door is now activated and will open and close automatically. Have fun!
    Elevator protection (advanced builders):
    • every created elevator has an owner. Only the owner can modify the elevator. To change the owner, type "/elev give <newownername>". To enable modification for every player, type "/elev give". This will remove any owner protection.
    • use the optional parameters to create an elevator/floor with protection, p.e. "/elev floor testing floor password ultimatepassword users NTcomputer Notch" would create a new floor named "testing floor" with the password "ultimatepassword", only available for the users NTcomputer and Notch.
    • modify your protection settings with the commands /elev user and /elev password, p.e.: "/elev user testing floor users Admin" will override the previous settings to only allow user Admin the usage.
    • remove protection settings? Very easy: use /elev password or /elev user without any parameters or floorname only to reset the protection.
    • so far the whitelist, but I want to create a blacklist. How to? Like this: "/elev user testing floor users * -griefer" (no, there isn't any space between the minus and the player - damn line break). * means everybody can use it, the "-" before a name indicates you hate this player and don't want to let him destroy your secret room on the testing floor ;)
    • I have set up the protection, but I'm never asked for a password?! This can have several reasons: 1.) You are an operator. 2.) You have the permission elevators.operator 3.) You are the owner of the elevator. Just let somebody else try, he WILL get a prompt. 4.) You are standing near the elevator while another player tries to use it. He/she won't be blocked.

    Known issues (open)

    • It is difficult to move yourself or turn around while moving with an elevator.
    • Don't use doors on an elevator! They will "clone" items.
    • Pressure plates don't work as Up- /DownBlocks directly. Build at least two redstone to them, type the command and right-click the end of the wire.
    • Avoid using up/down in circuits. This will force any selected redstone-block to remain in off-state. (You can use "direct", though!)

    Future Ideas (open)

    • name elevators - v1.4.4
    • signs with current floor - v1.4.5
    • allow any block type for doors - v1.4.5
    • iConomy support - coming in v1.5

    Changelog (server mod) (open)

    • Version 1.4.3 (RB #740)
      >>Download<<
      -implementation of the secret project (not useable yet)
      -fixed the chest duplication bug
      -fixed the powered/detector rail dropping bug
      -enabled plugin usage for subfolder-worlds
      -fixed some other exceptions
    • Version 1.4.2 (RB #670)
      >>Download<<
      -elevators are now stored in the world folders (-> allow backups)
      -items will drop when moved away from a wall
      -added forbidden blocks to config
      -added command abbreviations to config
      -added glassdoor directions
      -added "lock" for cabin blocks
      -prevent block changes while elevator moves
      -added more config options and messages
    • Version 1.4.1 (RB #602)
      >>Download<<
      -cabin blocks are now searched when initiating movement
      ->WorldEdit & Co for cabin blocks supported!
      -Entities are now moved along, even if they are positioned a greater distance above the ground blocks
      -merged direct and extend commands
      -enabled relative glass doors (=doors in the cabin)
      -glass doors are now "grouped" automatically for a more real opening order
      -redstone outputs floor parameter added.
      -ground blocks pending between grass and dirt are not blocking the elevator anymore
      -wheat, cactus and sugar cane item duplication bug fixed
    • Version 1.4 (RB #556)
      -Permissions support added
      -elevator and floor protection added
      ->many new commands and command parameters
      -command to remove glass doors from a specific floor
      -owner system added
      -individual elevator size support
      -fixed some bugs (can't remember which)
    • Version 1.3.1:
      >>Download<<
      -removed TSLPC
      -added go|direct command
      -improved elevator search
      -improved elevator position search (prevention of loosing the ceiling ;-))
      -storing entity positions when initiating moving - hopefully fixes fall-through bugs
      -added info console command to create debugging info files
      -binds glass doors to a command
      -fixed button and redstone bugs
      -improved storage cleanup
    • Version 1.3:
      -added automatically closing glass doors.
      -added configuration.
      -fixed a fault timing.
      -changed the command handler to onCommand in main file.
    • Version 1.2.3:
      -fixed a block checking bug.
      -redstone on the elevator is now working.
    • Version 1.2.2:
      -chests and dispensers are now working.
      -furnaces are now working.
      -adjacent mine tracks are now working.
      -item orientation bugfix.
    • Version 1.2.1:
      -color of wool is now stored.
      -Signs are now working inside the elevator.
      -orientation of levers, buttons, torches etc. is now stored (can still be glitchy, cause multiplayer servers always have problems with that)
      -fixed many bugs for the blocks built on the elevator
      -elevator blocks can be safely removed by iStick, Superpickaxe and others now
      -improved the movement system for liquids (enables lava doors and more!)
      -improved the movement system for all entities (creatures and minecarts will also be transported now)
      -elevator movement is now much smoother
      -improved floor search for up- and down-blocks when the elevator got stuck
      -changed the entire storage system
    • Version 1.2:
      - enabled building on the elevator.
      - created redstone outputs
      - fixed server crashes
      - made compatible to CraftBukkit 289+
      - improved handling of breaked blocks
      - made plugin thread-secure
      -fixed path problems on mac + linux
      - and maybe some others...
    • Version 1.1:
      - made the creation a bit easier.
      - fixed some bugs
      - increased the maximum size to 5x5
    • Version 1.0:
      - Release
     
  2. Offline

    firefly_goat

    How do you check CraftBukkit version?
     
  3. Offline

    akmotomoto

    When i got home from work last night I wanted to try useing only 1 lever. But before I tryed it I wanted to build some stuff on the elev to see if it worked. I was running around with my // pickaxe and ended up destroy th elev i had made!:(
    So i was like BAHH. Downloaded new version/installed and went to make the elevator fresh and it all worked as you said it should. I honestly think i was just being dumb with the problem i was having in the pics I posted.(plus no one else had had the problem i tihnk)(i blame the weed)

    So I did stumble onto something else last night. When I put a box on the elev, and then put stuff in it, the stuff in the box will pop out of it once the elev moves:( . If I put furnaces and do the same thing the burnable items and/or the smeltable items both disapear when the elev moves =(
    Before I go and post 15 pics about it again :eek:lol, I just wanted to check and see what your thoughts were on this.
    (Don't know if you new about this or not)
    (I think I understand why its happening tho. Elev's can be built on, and the stuff on the elev is saved by your pluggin, but stuff inside the stuff dosent get saved? so when the elev moves the stuff pops out of chests, or with furnaces, the stuff dissapears)
    Wanted to make hidden chests that pop up out of the flat floor when call the elev is called up that they are on.(I made a new 2nd elev, then built on it but this is what happend to me =( I can't catch a break! hahaha)
    --- merged: Feb 13, 2011 11:51 PM ---
    If you control your server, You can start it up and in the server window it will say all the pluggins your useing and their versions as they load onto the world. You can scroll up and down thru the window and look for the pluggin's name, aka CraftBukkit, (this is usually the first one on the list) then next to it there will be a version number.

    [​IMG]

    Just grabbed the newest one so it "should" look like this ... >.>
    ( I wonder is this is why I was haveing the lever problem earlyr.... /sigh)<---- NOOB!
    I think the 323 is the version but i could be wrong. If you dont have the newest version....
    GET IT!
    ;)
    If this dosen't work for you.... I have no idea how to check it any other way>.<sry!
     
  4. Offline

    GEN3RIC

    Here's an error I got which crashed the server, CB build 320. Somebody was using an elevator I created post-installation of 320 and the latest Elevators build.

    Code:
    2011-02-13 17:44:29 [SEVERE] Unexpected exception
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at com.bukkit.NTcomputer.Elevators.ElevatorsMoveTask.run(ElevatorsMoveTask.java:28)
    at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:114)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:304)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:232)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
     
  5. Offline

    Cybran

    Are you really sure you are working with v1.2.1? Please have a look on server startup! Because this is a bug which SHOULD be fixed with v1.2.1, also the line 28 in the MoveTask class (shown in your error log) doesn't contain any ArrayList function in the latest version.
    --- merged: Feb 14, 2011 7:33 AM ---
    This time you really don't have to post your picture story again ;). I know why this happens - because I haven't implemented anything for chests or furnaces yet. But if this is your wish, I can do of course :D
    --- merged: Feb 14, 2011 7:34 AM ---
    Thanks for the pictures, now I see! I will try to find a solution.
     
  6. Offline

    GEN3RIC

    You're right, I think batch copying got the best of me. I thought I pasted it in there but must have absentmindedly clicked the wrong option. My sincerest apologies for not vetting that better than I did. I'll update the plugin and keep my eye out.
     
  7. Offline

    akmotomoto

    Umm it would be awsome if you were planning on it! >.<
    thanks again!
     
  8. Offline

    Cybran

    Released version 1.2.2!

    including:
    • working chests, dispensers and furnaces on the elevator
    • adjacent minecart tracks won't drop anymore
     
  9. Offline

    akmotomoto


    ... YES! that was fast!... gogo test mode! BRB!
     
  10. Offline

    gdscei

    Umm i have a 2x2 elevator with 1.2.2 and it seems that if i put the button at a block like this:

    BLOCK>ELEVATOR
    where the > is a button, facing the elevator, it destroys it when the elevator goes down to that button. Can you fix that?
     
  11. Offline

    Cybran

    Sorry, since the liquid improvements the block checking doesn't work as it should.
    This is fixed in the new version 1.2.3

    Other features:
    • Redstone can be placed on the elevator without dropping.
     
  12. Offline

    gdscei

    Thank you sir :D
    I'm pumped for what's coming in v 1.3 =)
     
  13. Offline

    Punchin

    Quickly scanned the thread, but didn't find my question asked. I'm trying to use the "extend" feature, but it's not working. I'm trying to put a button at the top floor to call the elevator to the bottom floor. I ran redstone from 30 above sea level down to bedrock, and followed the instructions for the /elev extend command. It set the button to call it to the top, not the bottom. Does the redstone trail have to be a complete working circuit with repeaters every 15, or can it be all one solid trail?
     
  14. Offline

    Cybran

    Of course you have to use repeaters to extend the signal. It needs an active current at the position you marked as "ExtendBlock".
     
  15. Offline

    Punchin

    Ok, thx. Also, as I was tossing a quick test elevator together, I got the following error:
    Code:
    java.lang.NullPointerException
            at de.NTcomputer.Elevators.Elevators.onItemBlockCreate(Elevators.java:77
    1)
            at de.NTcomputer.Elevators.ElevatorsValidationClass.run(ElevatorsValidat
    ionClass.java:19)
            at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(C
    raftScheduler.java:122)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:304)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:232)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    2011-02-15 04:56:07 [SEVERE] Unexpected exception
    java.lang.NullPointerException
            at de.NTcomputer.Elevators.Elevators.onItemBlockCreate(Elevators.java:77
    1)
            at de.NTcomputer.Elevators.ElevatorsValidationClass.run(ElevatorsValidat
    ionClass.java:19)
            at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(C
    raftScheduler.java:122)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:304)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:232)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    Running Elevators 1.2.3, CB 325 on Win 7 x64 and Java x64

    Also, with my test elevator, I've found some interesting issues.

    1) The extra button would only connect to whatever elevator was on the same basic level, give or take a few levels, even though redstone was not connecting them.

    2) Redstone wasn't even needed, repeaters or not.

    Is your plugin able to set buttons on one level to operate call buttons on a different level, or does it have to be the same one? If it's same level, do you plan on extending it to include other levels?

    Also, the reason I asked about the repeaters before is I didn't know whether the plugin checked for power on the circuit or just followed the trail till it found a call block. Would be nice if there was a separate argument for extender to just specify which floor to connect it to.
    Ex: /elevator extend floor2
     
  16. Offline

    Cybran

    Sorry for this. I will fix it in the next version.

    When you type /elev extend and right-click a block, the system is searching for the next nearby floor (it doesn't matter how far it is away). I don't plan to make the floor selectable. If you want to call the elevator to another floor, lie out redstone wire (if necessary, with repeaters), type the command and right-click on the end of the wire next to the floor.
     
  17. Offline

    Punchin

    Sweet, thx. Finally got my button to work. 2 issues, both my bad.. >.< I need to learn to trace my redstone better. Had a torch on the wrong block. Also, was misunderstanding where to click to make the link. I kept clicking the second button, not the redstone by the target button. Good job with the mod and the very timely support and updates. :)

    *Edit* Just thought of a nasty trap. Set up an arrow turret to pop out of the ground so that as soon as it shows up, a rapid pulser starts firing it. Free cake, anyone?
     
  18. Offline

    gdscei

    Can't you make so that when you are setting a button to up /down an elevator you do this:
    /elev up <floorname>
    /elev down <floorname>
    ?

    The redstone technique works ok i guess =)
     
  19. Offline

    Cybran

    This is nearly the same as Punchin wanted - linking a button directly to one floor. If it's so important, I will add a new command like /elev go <Floorname>.
     
  20. Offline

    Punchin

    It would be nice, but I can live with redstone. I need to use it up somehow, anyway. Consider my post about it as just a minor feature request, please. After all, we should have to do SOME work for the "advanced" functions.

    Again, awesome skill with the keyboard. This is the most stable and frequently updated plugin I've seen for bukkit.
     
  21. Offline

    skullrader

    All the people on my sever love this i have it in my skyscraper works great cant wait for glass doors!
     
  22. Offline

    Cybran

    @Punchin & @skullrader:
    Thank you! I'm evrytime glad when I see that the work is well-placed [​IMG].
    Ok, I will delay the new command for a while. And I won't disappoint you, the glass doors are already done [​IMG] Only the configuration is remaining, then I'll release 1.3.
     
  23. Offline

    Killie01

    uhm it says there is not such a low floor
    but i have floors (2)
    it does work when call button is pressed but up and down not wrking
    (not always though)
     
  24. Offline

    Cybran

    You're sure you don't press them twice or more? Press one time, wait, move.
     
  25. Offline

    rano1234

    he Cybran, You did a GREAT job on making this plugin.
    One question:
    when someone is in an elevator i causes quite a lag for the surrounding area, is there a way to fix this?
     
  26. Offline

    Killie01

    yes im sure
     
  27. Offline

    skullrader

    I do not have this problem it is most likely a non equipped computer.
     
  28. Offline

    Punchin

    I'm running up to 3 servers on my PC at once as well as playing at the same time. None of my servers experience that issue, either. I agree with skullrader. Your comp may not be able to handle this mod. It does force the game to update your position many times per second as well as moving all items you have attached to the elevator.
     
  29. Offline

    skullrader

    Yes you could try to take items off of it or making it a smaller elevator
     
  30. Offline

    lopee50

    hey im having a little problem...i tried a 2 level elevator and going down and calling it up to the top level works fine, but if im downstairs the elevator just goes through me and the call button doesnt work :((
     
  31. Offline

    skullrader

    im taking a guess but you cant have a call button were the elevator will hit it can you maybe post a picture of your setup
     

Share This Page