* Implemented link creation based on link plans
* Improvised an implementation of door placement in DefaultDoorDecorator
for testing purposes. I'll provide a better version later.
Known issues:
1. Doors with one-way links to other rooms will generate a return door
at the destination. The return door doesn't actually lead back, it leads
to a new pocket. Need to disable pair generation for doors in mazes.
2. Consider weighing sections by the door capacity to avoid putting a
lot of doors into a small section. Also double-check that room selection
within sections is unbiased.
* Increased the chance of decorating unprotected rooms from 1/4 to 1/3.
* Made minor optimizations to the box building function.
* Added some important arguments to BaseDecorator.decorate(). Also
updated all decorators as a result of this change.
* Implemented TorchDecorator so that mazes have light sources in them.
* Finished implementing link planning for mazes. Doors aren't placed yet
because that's up to Decorators and those haven't been implemented yet.
* Added bounding walls to mazes.
* Added decay effects to mazes.
Tweaked maze section generation to use a random MAX_DISTANCE for
including rooms in a section. Also changed the code to perform room
removals as sections are processed rather than deferring them to the
end. Deferring removals would cause the algorithm to detect holes from
rooms that were going to be removed. This made section generation much
stricter than necessary.
* Changed saving code to create backups by moving existing files rather
than creating copies and deleting the originals.
* Removed final call to PocketManager.save() in PocketManager.unload().
Since we no longer check if the caller is the client or server and
unload() must be called from both, this prevents clients from trying to
save pocket data locally. A final save() call wasn't needed anyway.
Started implementing the placement of Dimensional Doors in mazes.
Currently, a design is guaranteed to have enough space for some doors.
MazeDesigner still needs more code to plan out which rooms will have
doors and where those doors will lead.
Made a minor change to PocketBuilder so that mazes generate instead of
regular pocket dimensions. I'm only doing this to test dungeon
generation - it'll get switched back once mazes are ready.
Rewrote portions of our maze generation code to use RoomData. This
provides an object that unifies all room data instead of having it
spread across various data structures and linked loosely by hash maps.
We'll need this to implement the remaining generation features.
Added a flag to NewDimData so that we can avoid writing dimensions to
disk if they haven't been modified. They're still rewritten when the
server shuts down.
* Fixed comments messed up by auto-formatting
* Minor formatting changes
* Combined two conditions in the door-placement code into an equivalent
condition
* Switched to deleting dimension data when a dimension is removed
instead of trying to figure out which dimensions were removed later
* Fixed a bug with blacklist paths
* Rearranged saving code slightly to avoid the potential performance
impact of repeated calls to getAbsolutePath()
Made saving a bit more robust, now we only delete ones that where not
modified. Also overhauled door placement, its all handled by the
eventHandler now.
Made saving a bit more robust, now we only delete ones that where not
modified. Also overhauled door placement, its all handled by the
eventHandler now.
* Changed DDTeleporter to stop us from generating exits to Witchery's
Spirit World - this would cause people to lose their items upon leaving
the dimension.
* Changed GatewayGenerator to stop us from generating gateways or rift
clusters in the Spirit World
Changed FillContainersOperation so that empty dispensers are not filled
with a stack of arrows on import. Just in case someone needs to use
empty dispensers in their design. As far as I can remember, this won't
affect any of our dungeons - arrow traps are rare. The only dungeon that
I can remember is one by Balgor and it was exported with all of its
dispensers loaded.
* Added a small treasure room that opens when the puzzle is solved and
made the exits in the corners slightly more apparent by placing redstone
lamps.
* Tweaked the redstone a little to correct for a brief signal cutoff.
* Tried to add fireworks that would shoot out when the puzzle was
solved, but it was too hard to secure them against theft while also
getting consistent explosions.