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

    moltendorf

    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 moltendorf.com/download/IntelliDoors.jar
    Now on BukkitDev at dev.bukkit.org/server-mods/moltendorf-intellidoors

    Previous Releases:Get the source code on GitHub at github.com/moltendorf/IntelliDoors
    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).

    Changes:
    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

    moltendorf

    Nah, I was just confused why you needed it when I already had redstone power serving the same purpose.
     
  3. Offline

    IronPython

    ah yeah i see ^.^ na for most things it works just like i want just those few times when i need to to stay open but i have no room or way to put redstone power to keep it on.
     
  4. Offline

    Nananea

    I'm hoping you will update this to work with fence gates. I really enjoy this plugin, thank you for your time and effort!
     
  5. Offline

    jungalist81

    This plugin still works on my Minecraft 1.8 server, can we get a changlog update?
    Also, we should add this to the BukkitDev website

    http://dev.bukkit.org/
     
  6. Offline

    Jimmylobo

    Good idea for a plugin. I'm gonna add it to my server and try it out!
     
  7. Offline

    moltendorf

  8. Offline

    CarlosJ

    could you add the option to change the time the door should be kept open?
     
  9. Offline

    moltendorf

    Sorry for my continued inactivity on this project; I've been learning a few more things about data structures that I was not aware of until I did some real programming in Java and am now doing things like comparing said knowledge to how data structures work in other languages that I already have a large amount of experience in, trying to understand how those are implemented, and which design would work better. I will definitely be getting back to working on this again soon, and will probably do another rewrite with said new knowledge.

    Also, as it appears, nothing has truly broken my plugin in the most recent build of Bukkit, so nothing seems to be urgent other than the fence gates, but those may be required to be implemented in a different way due to the fact that there's two directions they can open in (haven't messed with Redstone on them yet either so don't know how they react to that).
     
    Don Redhorse likes this.
  10. Offline

    Ares513

    Uh... the server cannot open doors while this plugin is installed. Attempting to open a door simply closes it in your face again. Help?
     
  11. Offline

    moltendorf

    Due to the fact I haven't tested the latest build of Bukkit with my plugin, I assumed your report was descriptive enough. But, I just tested on Bukkit build #1337. No bugs were found from normal testing. If you are having problems it is probably not my plugin working alone on the behavior of doors. Another plugin you are using may be manipulating how doors behave, causing the bug. If I don't know what plugins you're using, what build of Bukkit you are using, or the configuration of the plugins, I have no info to attempt to provide a possible solution.
     
  12. Offline

    HashWorks

    Works good with 1337.
    Would be nice if you implend fence-gates as well.
     
  13. Offline

    Jimmylobo

    I concur. :)
     
  14. Offline

    moltendorf

    Will be updating this very soon. Starting up my own personal Minecraft server again. Will be fixing bugs with door pair matching due to new transparent blocks as well as adding auto-close support for fence gates. Overall, it will also be a much cleaner rewrite. Expect some good stuff by Friday, December 2nd or by the first Recommended Bukkit release for Minecraft 1.0.0 (whichever is later). :3
     
  15. Offline

    Jimmylobo

    Good news. Even now it's a very useful thing this plugin of yours :).
     
  16. Offline

    moltendorf

    Additionally, if you read my original post: is there any additional feature requests for direction of the plugin after the 1.2.x release?
     
  17. Offline

    Jimmylobo

    I think you should be aware that Jeb recently tweeted about fixing "double door bug" (the fix is made but will be released with 1.1 according to him) which may interfere with the fix made by your plugin.
    There's nothing more I could think of in the context of your plugin. It's almost perfect as it is now.
     
  18. Offline

    moltendorf

    Depends on how he fixes it. In my opinion, it'd be easiest to simply use an additional block(s) that has different positions for powered and unpowered states (I'd really like this, makes it possible for me to add even more functionality to this plugin around those extra blocks), or check for a door set. Hopefully he doesn't do something like orientation detection for Irons Doors though (I don't do it for iron doors to permit them to be "locked" by powering a door that was placed in a reverse position), but for Wooden doors it's perfectly fine. If he does fix the bug in a way I like, I'd just be removing code from my plugin for the most part (except functionality he didn't include, like possibly opening both doors in a double door set from one power source, or a small delay imposed on shutting the doors from redstone power loss). If he doesn't do it the way I like (or at all), I'll make sure they work exactly like they do now in the future.
     
  19. Offline

    Don Redhorse

  20. Offline

    moltendorf

    Working on it right now, and also continually working on it for about 50 minutes twice a day while riding the train.

    I promise to have it out no more than one week after Bukkit's 1.0.0 release. :)

    Edit: what I'll include in the next release is a lot of public classes as well, so that you may use IntelliDoors as a dependency without its functionality to control doors in other plugins.
     
    Don Redhorse likes this.
  21. Offline

    moltendorf

    Alright guys, made up a new configuration class for the 1.2 release. I'll write up an explanation soon of what each option means, but all you software engineers (or well, just know how to read source code comments) can try to decipher what each option means.

    Here's a hint: the Door class only applies to one type of door, so there will be an instance of that class for each type of door (each with individual settings).

    Have a look: https://github.com/moltendorf/Intel...endorf/bukkit/intellidoors/Configuration.java.

    Hope you like the flexibility and new features coming down the pipe. :D

    In Listener_Interact.java comment out line 20.
    Code:
    protected Handler getHandler(final Block block) {
    	// Get the material of block that was passed.
    	final Material material = block.getType();
    
    	// Check that the material of the block is one of the types we handle.
    	switch (material) {
    		//case TRAP_DOOR:
    		case WOODEN_DOOR:
    			// Finally, get our door set.
    			return Door.Get(material, block, this);
    	}
    
    	return null;
    }
    In Listener_Physics.java comment out line 21.
    Code:
    protected Handler getHandler(final Block block) {
    	// Get the material of block that was passed.
    	final Material material = block.getType();
    
    	// Check that the material of the block is one of the types we handle.
    	switch (material) {
    		case IRON_DOOR_BLOCK:
    		//case TRAP_DOOR:
    		case WOODEN_DOOR:
    			// Finally, get our door set.
    			return Door.Get(material, block, this);
    	}
    
    	return null;
    }
    It's really that simple (until configuration comes along). :3

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

    veN1337

    Update progres? :)
     
  23. Offline

    dragonhib

    Yep !! any news about CB 1.0.0-R1 compat release of this awesome plugin ??
     
  24. Offline

    Musaddict

    I hope to see this updated. It really was quite convenient.
     
  25. Offline

    Don Redhorse

    sigh another dead plugin... gone since the 19th of december
     
  26. Offline

    moltendorf

    Released 1.1.11. This adds support for Fence Gates, and adds the latest blocks known to the door orientation detection.
     
    Don Redhorse likes this.
  27. Offline

    Don Redhorse

    nice to see you back
     
  28. Offline

    ThoLav

    Hi,

    it would be nice, if in 1.2 it's configurable which sort of door will be closed or opened, or configurable thru clicking with stick (another tool) per door pair of doors.

    Thanks in advance.
     
  29. Offline

    moltendorf

    Just giving a warning that CraftBukkit 1.1-R5 may break this plugin. As such, I will post back and confirm whether or not IntelliDoors 1.1.11 works with it upon release of CraftBukkit 1.1-R5, if it does not then expect a 1.1.12 release shortly after CraftBukkit 1.1-R5 releases.

    Another warning is that Minecraft 1.2 will break this plugin (or this plugin will break your doors). So do not use the IntelliDoors 1.1.x (or the older 1.0.x branch) at all with Minecraft 1.2. I will be pushing my 1.2.x branch out soon, and it will be compatible with Minecraft 1.2 when it is released.

    I never left, my plugin didn't break, and I was using it myself all the way up until CraftBukkit 1.1-R3; finally seeing a need to have fence gates automatically close, I was inspired to add that functionality. :p

    Anything is possible, but I'd rather stay away from storing information about a door in a database; there will be options to preserve a doors existing state, and change it using a special tool while holding the sneak key, however.
     
  30. Offline

    ThoLav

    I meant a configuration, so that your plugin will not react on doors set to false, not to store the single door. I hope it's now better explained, what I mean.
    • trapdoor=false
    • irondoor=true
    • woodendoor=true
     
  31. Offline

    moltendorf

    Yes, to some degree, what I explained, and to full extent, what you described, will be available in version 1.2. :)
     

Share This Page