Inactive [MECH] IntelliDoors v1.1.11 - Open and close doors with ease. [1.1-R4]

Discussion in 'Inactive/Unsupported Plugins' started by moltendorf, Jun 9, 2011.

  1. Offline


    IntelliDoors - Open and close doors with ease.
    Current Version: 1.1.11

    Make your doors easier to manage! No more complicated redstone systems required to control double doors with redstone. Never close a door you just opened again. Stop doors from slamming on your face when you press a button or step on a pressure plate to open them. Need to keep that door open instead of closed? Power it with redstone!

    I was originally inspired to write this as a replacement by Yurij's SelfClosingDoors plugin. However, later I found FrozenBrain's replacement for it, Self-Closing Doors, and then added more functionality based on some of the goals of his plugin. This plugin does not contain any original code from either plugin but I will admit to snagging the idea of using bit manipulation from FrozenBrain's source code. [​IMG]

    Current Features:
    • Inverts the response to redstone on the right door in a double door set.
    • Holds doors open for two seconds after they lose redstone power.
    • Keeps double doors in sync by mimicing your actions on either door to the other door.
      This includes redstone controlling one door causing the other to respond.
    • Individual reverse iron doors retain old functionality.
      This means it closes them when powered, and it opens them when not powered.
      Additionally, instead of delaying their response when losing power: it delays their response when receiving power.
    • Prevents you from accidentally shutting a door after opening it, or opening it after shutting it.
    • Resets all wooden and trap doors to their original power state after five seconds.

    Download IntelliDoors v1.1.11 at
    Now on BukkitDev at

    Previous Releases:Get the source code on GitHub at
    You can also find it in IntelliDoors.jar itself. Just open it as a zip file.

    Known Issues:
    • Monsters don't seem know how to pass through doors opened with redstone.
      In another sense, wouldn't this actually be considered a feature?
    • Opening and shutting a door with redstone does not respect protection plugins.
    • It is only possible to break a door by breaking the block under it.

    Planned Features:
    • Close doors when you walk away from them instead of after a set time (planned for branch 1.2.x).
    • Add configuration file (planned for branch 1.2.x).
    • Add in any additional fixes for security plugins (planned for branch 1.3.x).

    Version 1.1.11
    • Added in support for Fence Gates.
    • Updated ignored blocks in door orientation detection.
    Version 1.1.10
    • Fixed powered wooden doors resetting too quickly after being shut by clicking.
    Version 1.1.9
    • Fixed cancelling of an event pertaining to a door not being respected.
    • Fixed door sound not being played to other users when interacting with a door.
    Older Changes (open)
    Version 1.1.8
    • Fixed placed doors not responding properly without a server restart.
    • Fixed the ability to dynamically change a doors orientation.
    • Improved synchronized code even more.
    Version 1.1.7
    • Improved handling of combinations of manual triggering and redstone triggering of doors.
    • Now prevents you from flipping a door by clicking it shortly after it is opened or shut by redstone.
    • Standard auto-close reduced from 10 seconds to 5 seconds.
    • Redstone hold delay reduced from 2.25 seconds to 2 seconds.
    • Minimum manual flipping delay reduced from 0.5 seconds to 0.25 seconds.
    • Fixed a large number of issues caused by doors being added and removed.
    • Fixed some rare issues with doors being grouped together when they should not be.
    • Moved the sound played to the center of the door set from the left one.
    • Completely reworked the synchronized code, as the amount of synchronization going on was superfluous.
    • Completely rewrote the library.
      • Replaced deprecated code with new code.
      • More garbage collection friendly.
      • More initial memory use.
      • Less memory use per door.
      • Doors are now grouped, improving seek time for active sets.
    Version 1.1.6
    • More major reworks of logic.
    • Fixed doors staying locked open when there is redstone power provided.
    • Fixed doors not shutting in a timely manner when open and shut before removing power from them.
    • Fixed some issues with events being cancelled by protection plugins not being respected.
    Version 1.1.5
    • Major rework of logic for slight change in how redstone triggers occur.
      This fixes my plugin for build (approximately) 953 and later.
      It, however, retains backward compatibility with previous builds.
    • Reverse iron doors that are not in a set now respond opposite to how reverse wooden doors respond to redstone.
    • Doors now orient themselves to their proper power state after being placed.
    • Door sets will no longer form when either door can belong to more than one door set.
    • Bukkit fixed trap doors not staying open after losing redstone power.
    Version 1.1.4
    • Wooden and trap doors now restore themselves to their power state rather than closing when clicked.
      This means you can keep doors open by powering them with redstone power.
    • Fixed reverse door switching with redstone.
    Version 1.1.3
    • Doors now take two extra seconds to close after redstone power is shut off.
      Trap doors do not feature this currently.
    • Fixed an issue with opening or closing doors manually while redstone is powering them.
    Version 1.1.2
    • Fixed a very rare server-crashing infinite loop caused by a race condition.
    • Got really mad at race conditions and fixed every feasibly possible one even if CraftBukkit does not have the possibility of triggering them.
    • Now including the current release in the previous releases list to allow people who use plugin updaters to get the latest version and prevent it from auto-updating.
    Version 1.1.1
    • Fixed an issue with input being ignored to one door in some cases.
    • Fixed an issue with doors that are open on plugin load not responding to redstone until closed for at least ten seconds.
    • Added lots of comments to the main functions triggered by events.
    Version 1.1.0
    • Inverts the redstone power to the second door in a set.
    • Redstone now powers both doors in a set rather than just one door.
    Version 1.0.18
    • Now works with trap doors.
    • Does not consider adjacent trap doors as door sets.
    Version 1.0.17
    • Sounds now only play once per door set rather than for each door.
    Version 1.0.16
    • Added sounds to any automated effects with doors. Thanks to SpaceManiac.
    • Added a period to my topic title.
    Version 1.0.15
    • You can build again with this plugin installed.
    Version 1.0.14
    • Broke the ability to build. Oops.
    • Another nearly complete rewrite of the code; retains all previous features.
    • Fixed several theoretically possible bugs that should otherwise never occur in a single-thread setup.
    Version 1.0.13
    • Fixed a possible race condition.
    • Fixed an issue with doors that are open on plugin load being unable to close unless left closed for at least ten seconds before opening them again.
    Version 1.0.12
    • Introduced a race condition.
    • Now prevents you from accidentally opening or shutting a door (set) right after you did the opposite by cancelling any attempts to open or shut a door (set) within half a second of opening or shutting it.
    Version 1.0.11
    • Improved handling of sync delayed tasks. Now cancels the previous one and creates a new one rather than just creating a new one but telling the old one to do nothing when it's run. It feels like a much cleaner way to handle things.
    Version 1.0.10
    • Checks against more blocks than air to determine the proper closed state.
    • Now only pairs doors together if they are a matching set.
    Version 1.0.9
    • Now detects whether or not your doors match the orientation they were originally set to before closing them.
    Version 1.0.8
    • Fixed an issue with the surrounding block detection resulting in false positives in very rare block placements.
      It now follows my rules no matter what.
    Version 1.0.7
    • Now detects surrounding blocks to determine the proper closed state of a door.
    • Changed the set detection to ignore doors at different elevations to the door clicked.
    • Cleaned up the constructor of the IntelliDoorsDoor class.
    Version 1.0.6
    • Original intended state of the 1.0.4 release.
    Version 1.0.5
    • Instead of misplacing the left or only door in three of the four possible facings, I broke it. Double oops.
    Version 1.0.4
    • Misplaced the left or only door in three of the four possible facings. Oops.
    • Fixed some minor issues with placing other blocks before the automatic closing occurs.
    Version 1.0.3
    • Fixed an issue with the doors always closing ten seconds after every time you clicked.
      They will now only close ten seconds after you last clicked.
    • Completely rewrote code to contain significantly less duplication.
    • Fixed some theoretically possible bugs (theoretically).
    Version 1.0.2
    • Fixed an issue with door protections causing the second door in a set to be opened when the original one was not opened successfully. Thanks to Sleaker, and SpaceManiac.
    Version 1.0.1
    • Fixed an uncaught exception that was pointless to fix other than to prevent server log spam and server administrator heart attacks.
    Version 1.0.0
    • Initial release.
    Jimmylobo, Cenarius and olimoli123 like this.
  2. Offline


    Well that was short lived. CraftBukkit 1.1-R5 (as well as a hotfix, CraftBukkit 1.1-R6) with the deprecated code removed comes out at the same moment that Minecraft 1.2 comes out. My plugin does not work with CraftBukkit 1.1-R5 (and CraftBukkit 1.1-R6).

    Due to the fact that I will probably end up spending almost the same amount of time on replacing the deprecated code to get a new hotfix out for CraftBukkit 1.1-R5 (and CraftBukkit 1.1-R6) as I will probably spend getting my next feature release done and with CraftBukkit 1.2 just about to be released: I will not be releasing 1.1.12, and instead will be using my spare time to work on branch 1.2 for CraftBukkit 1.2. Working on a 1.1.12 for you guys will result in a 1.1.12 release after CraftBukkit 1.2 hits the recommended builds.

    I apologize for the inconvenience caused to people that are using the latest recommended build of CraftBukkit; but you can live without fully automated doors for a few days, right?
  3. Offline


    Well, it looks like a few major changes under the hood can be made with Minecraft 1.2 which should speed things up dramatically.

    I don't need to do door orientation checking anymore as Minecraft itself now stores which side the hinge is on.
    I don't need to invert redstone to the right door in a set anymore because of the above change also making the right door in a set open when powered like the left door.
    I don't need to listen on the physics event anymore because the above change will guarantee that the redstone event is always fired.
    I don't need to do special treatment for reverse iron doors anymore as it is possible to place a door that looks the same but behaves opposite to redstone now.

    Better overall efficiency from this change, even if my Java skills did not improve (although they did, so even more efficiency on that part).
    Out of this, players will get more flexibility without additional permission or configuration options needed; it will be possible to keep standard doors open with this plugin without redstone power by simply placing standard doors backward.

    Posting this here as a mental note and information for other developers interested in my slight findings. :)

    In other news, with a Minecraft API coming soon for the client from the people who made Bukkit, I plan to make a client plugin that works with and without this server plugin. :)

    With the plugin, opening a double door by hand will open both doors no matter which door you opened (just like the server plugin), but regardless of if the server has this plugin or not. If the server does have this plugin, it will simply smooth the kinks out with having the other door always open shortly after the one you opened, solving the somewhat common issue with still running into that other door expecting it to open by that time.

    Depending on how the API is implemented; it may or may not be possible to distribute the client plugin to players that are connected to a server running my server plugin, it may or may not be possible to permanently install the plugin on the client regardless of which server you are connected to, and it may or may not be possible to install it manually from a download. Hopefully all three can be supported. Ideally: join a server, plugin is activated automatically, player has option to install it permanently from menu screen, otherwise it is silently disabled (uninstalled) upon leaving the server. The player can also find the plugin on a website, and install it from there. Finally, the player will be able to uninstall it from within the game as well.
  4. Offline


    Just checking if you're still alive.
  5. Offline


    Is this plugin still being worked on?
  6. Offline


    I've decided to trash my current release goals for 1.2, instead I will be doing releases in an incremental fashion again starting from the basics. Trying to develop all the features from scratch again and be better/more bug free than the previous versions is a psychological gateway I cannot pass through.

    However, expect even more stability than in any of my previous releases as I'm doing things right this time around (I was using some bad very bad practices I learned in a college course I took for another language, which lead to creating a lot of bugs and crashes).

    If you are particularly excited for the second coming of this plugin, just want to learn about Java, or both: you can always add me on Skype (my username is the same as it is on this board). Pestering me in a more personal manner will help me push along on these side projects. :D

    Here's to a release soon. :)

Share This Page