Commit Graph
100 Commits
Author SHA1 Message Date
SenseiKiwi 027b329af8 Completed Unsafe Exit Teleportation
Completed the code in yCoordHelper for choosing a point to drop the
player when using a Transdimensional Trapdoor. Made changes to
DDTeleporter so that the player can be dropped at the specific point we
want. This needs further testing, though, since I'm not completely sure
it's working right.
2013-09-09 02:31:11 -04:00
SenseiKiwi 7dbc6896b1 Minor Fixes
Cleaned up obsolete code in PocketProvider and fixed the assignment of
hasNoSky so that it actually applies. Also overloaded getActualHeight()
so that we return 256 despite hasNoSky = true - the default MC behavior
is that we would return 128 in that case. Also undid a previous change
to EventHookContainer - players that die in pockets will respawn in
Limbo, again.
2013-09-09 00:42:03 -04:00
SenseiKiwi 9fec41f906 Minor Change
Renamed IDimDoor.placeDimDoor() to placeLink(), since that's what it's
actually being used for in our doors. Saying it places the door itself
is confusing.
2013-09-08 21:05:06 -04:00
SenseiKiwi 156c61a772 Improved DDTeleporter
Made a minor change to DDTeleporter - added a flag so that we can
specify that entities must be teleported to the destination without
trying to shift them around based on destination orientation. This is
important for the trapdoor, since otherwise entities might get shoved
into walls. Also cleaned up some code in DDTeleporter. It's much more
readable now. These changes are in preparation for completing Trans
Trapdoor destination selection.
2013-09-08 21:01:38 -04:00
SenseiKiwi fc6dd63573 Minor Change
Renamed TransTrapdoor.isTrapdoorOnBlock() to
TransTrapdoor.isTrapdoorSetLow() so it would be easier to understand
what it indicates.
2013-09-08 16:48:16 -04:00
SenseiKiwi 4501e9373f Finished Merging Changes to Trapdoor
Merged together the different changes we had made to Transdimensional
Trapdoors. Cleaned up the rendering and tile entity code a bit, it
should be a little more understandable now.
2013-09-08 16:45:28 -04:00
SenseiKiwi de5ef3b85f Renamed TileEntityDimHatch
Renamed TileEntityDimHatch to TileEntityTransTrapdoor. That matches the
name of the item we use in other parts of DD's code.
2013-09-08 15:31:17 -04:00
SenseiKiwi 37b0510676 Partially Improved Unsafe Exits
Partially completed the code for unsafe exits (used for trapdoors) so
that they drop players into air pockets. It's not complete yet, but I
want to merge in other changes before continuing.
2013-09-08 15:23:14 -04:00
SenseiKiwi 72213de437 Minor Change
Removed unused import in TransTrapdoor
2013-09-08 15:22:19 -04:00
SenseiKiwi 672c19b032 Improved Dim Door Collision Detection
Improved our code for checking whether an entity in contact with a door
should be teleported. Now the check works better, works for Minecarts,
and is more readable. It also ignores particle effect entities.
2013-09-08 15:22:03 -04:00
SenseiKiwi 44b39be7b7 Modified RiftFX Classes
Modifed the RiftFX classes so that their particles have noClip = true.
This avoids rifts spamming the collision events of other blocks,
including dimensional doors, and it should improve the performance of DD
a little.
2013-09-08 15:18:48 -04:00
SenseiKiwi f83841a142 Fixed Transdimensional Trapdoor
Got the Transdimensional Trapdoor working again. Renamed the file to
TransTrapdoor and trimmed off unnecessary code - BlockTrapDoor
implements a lot of the necessary logic. Implemented IDimDoor for
clarity.
2013-09-07 23:27:07 -04:00
SenseiKiwi 7280b54c47 Updated BlockRotator
Updated BlockRotator to check if a block is an instance of DoorBlock
instead of checking for BaseDimDoor - since we changed BaseDimDoor to
derive from DoorBlock, the latter check is no longer needed.
2013-09-07 22:16:47 -04:00
SenseiKiwi fb59a3dacb Merge remote-tracking branch 'upstream/DevBranch' into rewrite 2013-09-07 22:05:11 -04:00
SenseiKiwi b5d4df8f6a Updated LimboDecay
Updated LimboDecay to not affect certain blocks from DD. This matters in
case we decide to start placing gateways in Limbo again.
2013-09-07 21:35:15 -04:00
SenseiKiwi 703ec03d29 Stopped Cluster/Gateway Generation in The End
Added a condition preventing rift clusters and gateways from generating
in The End. It's not really useful to do that right now and could
actually cause some annoying side-effects.
2013-09-07 21:25:38 -04:00
SenseiKiwi a0f9dfff4a Merge remote-tracking branch 'upstream/master' into rewrite 2013-09-07 20:23:53 -04:00
SenseiKiwi 1d1d0a767c Fixed Doors and Minor Dungeon Change
Fixed the regression bug that caused some of our doors to get placed in
the wrong direction. Changing doors to inherit from BaseDimDoor caused
BlockRotator to assume they weren't dimensional doors because it used
"instanceof DimensionalDoor" to check. Thanks for figuring it out,
Steven! ^_^

Also made a minor change to dungeon generation. We now check the game
rule doMobSpawning and don't spawn Monoliths from DungeonSchematic if
the value is false. This is useful for testing without Monoliths around.
We still do work to remove the portal frame blocks even if the mobs
aren't spawned.
2013-09-07 20:14:14 -04:00
SenseiKiwi 921b6e88af Removed Rift Creation and Unused Settings
Removed the rift creation code from the Rift Blade and removed unused
settings from DDProperties. Specifically, the rift creation flag for the
Rift Blade, since that's getting removed, and the RiftSpreadModified,
which hasn't been referenced for a while.

I also cleaned up the code in Rift Blade slightly. Its special functions
worked during testing but blocking did not. I'm not sure why at the
moment.
2013-09-07 19:44:33 -04:00
SenseiKiwi fd4b9b5086 Fixed Regression in DungeonSchematic
As part of the rewrite, I'd removed code related to replacing the
sandstone markers under dungeon exit doors, so the markers weren't being
replaced. Now that's working again.
2013-09-07 13:14:43 -04:00
SenseiKiwi 07a5e2a64d Progress on Rewrite
Completed exit door code. Also fixed noise calculation for dungeon door
destinations - we were attempting to use pack depth in the calculation
before it had been initialized.
2013-09-07 12:27:28 -04:00
SenseiKiwi 06c90572f1 Merge remote-tracking branch 'upstream/DevBranch' into rewrite 2013-09-07 05:12:30 -04:00
SenseiKiwi 25d3931210 Improved DDLoot
Fixed an issue with DDLoot where we couldn't distinguish between items
with the same ID but different subtypes while merging loot categories.
For instance, we could not include two different colors of dye in our
loot because their item IDs matched. We can now tell them apart properly
and include both items.
2013-09-07 05:12:07 -04:00
SenseiKiwi bac3caa5cc Minor Changes
Changed EventHookContainer.LivingDeathEvent() to use the player's max
health instead of a fixed health value. No magic numbers! Also cleaned
up the code a little.
2013-09-06 22:14:27 -04:00
SenseiKiwi a0454351d5 Cleaned Up Code
Deleted PlayerRespawnTracker and removed all references to it - we
weren't going to use it anymore anyway. Renamed IDDoorLogic to IDimDoor
- abbreviating the "Dim" as D next to the standard I for Interface is
confusing. Renamed DDoorBase to BaseDimDoor and made it into an abstract
class - that's effectively what it was supposed to be. We should be
declaring methods as abstract rather than using empty ones. I renamed
the class because the convention for naming abstract classes is to start
the name with Base. Cleaned up code in other files.
2013-09-06 20:57:00 -04:00
SenseiKiwi f2ff5f79cc Merge remote-tracking branch 'upstream/DevBranch' into rewrite 2013-09-06 18:41:20 -04:00
SenseiKiwi c57b001fe2 Partially Fixed Exit Doors
Added code so that exit doors will search for a destination and place a
platform for the player on the other side. However, the search function
only searches upward, not downward. I'd like to discuss some details
about this before completing the implementation:
1. How should the search work?
2. What should be the likelihood of a dungeon exit leading to a
different root dimension than the dungeon's actual root?

I've tested the exits and they're working well.
2013-09-06 18:40:43 -04:00
SenseiKiwi b795c411be Added Support for Missing Link Types
Added functions for generating destinations for some link types that we
hadn't included yet - player-made exits, trapdoors, and dungeon exits.
The player-made and dungeon exits still don't generate anything, but
there's a single function where we can write up the code:
DDTeleporter.generateSafeExit(). Also added some simple code for listing
root dimensions in PocketManager. None of this has been tested yet!
2013-09-05 22:43:11 -04:00
SenseiKiwi 03660699cf Minor Changes
Cleaned up our code related to initializing dimensions. Removed
redundant instances of that code and instead created a function:
PocketManager.loadDimension() - to centralize all uses of that logic.
Added LinkTypes.REVERSE to represent links leading back out of pockets
through their entrances. That distinction might prove critical in the
future when we support resetting dungeons.
2013-09-05 21:03:11 -04:00
SenseiKiwi 3ce380ad5e Fixed Unstable Doors
Added code so that the links for Unstable Doors are handled properly by
DDTeleporter. Hurray! Also cleaned up some unused imports in the
BiomeGen classes and removed the RANDOM_DUNGEON link type - it was meant
for the dd-rift command but there is no need for it anymore.
2013-09-05 18:13:05 -04:00
SenseiKiwi 1dfa5817bf Moved DDTeleporter
Moved DDTeleporter to the mod_pocketDim.core package. It seemed
reasonable given that DDTeleporter is closely tied to how Dimensional
Doors works. It controls the most critical feature for all items -
teleportation - and handles routing requests to initialize link
destinations.
2013-09-05 16:31:32 -04:00
SenseiKiwi 64cc95f92b Deleted DimUpdatePacket
Deleted DimUpdatePacket since it's not used for anything and the file is
essentially empty.
2013-09-05 16:24:01 -04:00
SenseiKiwi a82c7ce4c2 Minor Changes
Made minor changes to ItemRiftBlade to clarify our code. Had to update
mod_pocketDim to use ItemRiftBlade's new constructor after changing it
slightly.
2013-09-05 16:19:05 -04:00
SenseiKiwi 1138f6733e Cleaned Up Code
Changed calls to canPlayerEdit() to pass hit.sideHit data with the
request. Also renamed several variables to make the code clearer.
Removed a custom implementation of the ray tracing call in BaseItemDoor
- we can use the built-in call from Minecraft there.
2013-09-05 11:36:59 -04:00
SenseiKiwi 22b7ed147a Fixed Bug in PocketManager
Fixed a bug in PocketManager - I had forgotten to raise the dimension
creation event when needed.
2013-09-05 11:13:14 -04:00
SenseiKiwi 6a816bbca7 Minor Change
Removed a debug message from the Rift Remover.
2013-09-05 11:04:48 -04:00
SenseiKiwi b4cb8f8610 Fixed Rift Remover
Fixed the Rift Remover item.
2013-09-05 02:12:59 -04:00
SenseiKiwi e8e0cdf8ad Minor Changes
Made minor changes to LinkTypes for clarity. Removed removeRift() from
PocketManager since it wasn't used by anything and because it shouldn't
contain rift removal code anyway.
2013-09-05 00:15:48 -04:00
SenseiKiwi fa33fa95c8 Fixed Rift Signatures
Fixed Rift Signatures and Stabilized Rift Signatures. A few unexpected
MC-related issues were preventing them from working properly. Also fixed
a typo that caused us to place rift blocks at the wrong coordinates with
respect to the rift sig endpoints. Autocorrected the indentation on both
source files for aesthetics.
2013-09-04 19:26:59 -04:00
SenseiKiwi 8d5a3ac72e Fixed More Bugs
Fixed how the door in a pocket is placed so that it doesn't break and so
that it's placed facing into the pocket. Also added code to make that
door link back to the parent dimension - forgot that before!
2013-09-04 16:06:54 -04:00
SenseiKiwi 70eb276086 Fixed More Bugs
Fixed a similar bug in DDTeleporter and PocketBuilder that caused things
to be oriented wrong. Specifically, teleporting would orient the player
wrong relative to the destination door and pockets would be oriented
wrong relative to their parents. Teleporting works properly now.
2013-09-04 14:29:53 -04:00
SenseiKiwi b3847a62b7 Fixed More Bugs
1. Fixed mistakes in PocketBuilder that would cause dungeons to be
initialized as non-dungeon pockets. This restored Monolith spawning
around dungeons.
2. Fixed a bug in DungeonSchematic - returning links through entry doors
should work now.
3. Made minor changes to DungeonSchematic for clarity
2013-09-04 13:48:54 -04:00
SenseiKiwi b9fcfea877 Fixed Various Bugs
Fixed various minor bugs affecting transient doors and teleportation.
2013-09-04 00:34:11 -04:00
SenseiKiwi 549ee54852 Fixed More Bugs
Fixed the issue with integrated servers causing circular updates between
the combined server and client. We now check on the client side whether
the connection we're receiving data from is a memory connection (which
is presumably only used by integrated servers). If so, the client
ignores any incoming packets. We don't just disable update events
altogether because LAN games will require updating remote clients.

Also fixed a bug in PocketManager.unload() - we weren't setting isLoaded
to false after unloading everything and unregisterPockets() had to be
called before setting dimensionData to null.
2013-09-03 21:41:54 -04:00
SenseiKiwi 1a50aa2290 Minor Changes
Minor changes: removed unused imports and random blocks of whitespace
2013-09-03 19:31:19 -04:00
SenseiKiwi 8bfe9dc22e Fixed More Bugs
Fixed more bugs. Now it's possible to generate a world without crashing.
Unfortunately, it's clear that there is a packet-sending loop going on.
I'll have to add a check to prevent integrated servers from spamming
themselves.
2013-09-03 18:28:42 -04:00
SenseiKiwi 77bc0e833f Fixed Bugs
Fixed bugs that would cause Minecraft to crash on startup. At least I
can get to the main menu now.
2013-09-03 17:47:02 -04:00
SenseiKiwi 4cd7d3c0ae Completed Packet Handling Code
Finished implementing all the packet handling code. It could be improved
in the future to compress the initial packet sent to clients. With this,
the code is complete enough to run! Commands have not been fixed yet but
that will come in the future.
2013-09-03 17:25:58 -04:00
SenseiKiwi 3568d223ff Overhauled Server-Side Packet Handling
Threw out the complicated architecture that I'd made for synchronizing
server and client data perfectly. Instead, we now send just enough data
to the client and the resulting code is simpler. Some of the client-side
code is also done so all packet handling should be finished soon.
2013-09-03 15:33:09 -04:00
SenseiKiwi 307d2258d1 Progress on Rewriting Packet Handling
Continued building a system for transferring the complete internal
states of our dimensions from the server to the client. However, Steven
suggested that clients only need minimal data to operate properly, as
opposed to the server. My motivation for this more complicated system
was the concern that minimal information wouldn't be enough. I'm going
to commit my progress, then tear it down and write a much simpler
version.
2013-09-02 16:51:20 -04:00
SenseiKiwi 56ecb0cd9e Reorganized DimLink Code
Moved the DimLink code out of NewDimData in order to reduce clutter
inside that class and made it a separate class, except for functions
that should only be available for NewDimData. Deleted IDimLink and
changed all references to it to use DimLink instead. DimLink is now an
abstract class, which achieves the same encapsulation and protection we
had before by having DimLink implement IDimLink from within NewDimData.
NewDimData has a new class inside, InnerDimLink, which provides it
access to special functions that would be dangerous to expose. This is
the same mechanism used to protect NewDimData's dangerous functions.
These changes are in preparation for adding more code for packet
handling.
2013-09-02 11:47:12 -04:00
SenseiKiwi 0bd7ef9593 Deleted PacketHandler
Forgot to commit this change before.
2013-09-01 22:02:05 -04:00
SenseiKiwi 62fed83e2f Started Rewriting Packet Handling
Started rewriting our packet handling code. Deleted PacketHandler in
favor of using sided (Server-, Client-) packet handlers to make it
easier to follow what's going on in our code. Added some event-based
handling of updates which greatly simplified signaling that data needs
to be sent, but it's not completely done yet.
2013-09-01 22:01:17 -04:00
SenseiKiwi efa5b3eb4c Modified NewDimData and IDimLink
Modified how links are created so that the caller must specify a link
type when the link is created, rather than setting it later. This was
done to avoid having to send two link data packets following the way
links would be handled logically. Turns out this was good idea overall
for ensuring link integrity, because there was one case where I forgot
to set the link type after creating the link.
2013-09-01 10:50:20 -04:00
SenseiKiwi 4086e75ead More Progress on Rewrite
Fixed the code in DDTeleporter and made minor changes to other classes
that depended on those fixes. Ensured that PocketManager's load, save,
and unload methods are called appropriately and rewrote some of their
code. Made various changes in other classes (e.g. EventHookContainer,
PlayerRespawnTracker) to pass them references to DDProperties through
their constructors instead of having them rely on
DDProperties.instance() - this is a better programming practice in the
long run.

Renamed initialization methods in mod_pocketDim to make it clear that
they're called on events. Commented out command registration in
mod_pocketDim so that we can test DD as soon as PacketHandler is fixed,
without worrying about fixing the command classes.
2013-09-01 09:21:27 -04:00
SenseiKiwi b795885f1c Renamed ItemLinkSignature to ItemRiftSignature
Renamed ItemLinkSignature to ItemRiftSignature to match its in-game
name. Automatically updated references to the old class name.
2013-08-31 20:46:20 -04:00
SenseiKiwi 4f3ab403d3 More Progress on Rewrite
Fixed the code in ItemLinkSignature and ItemStabilizedRiftSignature.
Removed obsolete code from PocketManager - we don't need to worry about
storing link keys anymore. All the data is stored in NBT, which means no
more generating unique keys or worrying about saving and loading them.
2013-08-31 20:44:31 -04:00
SenseiKiwi 1cc1c374f6 Removed DimRail Files
Removed files related to DimRail since they seem to be left over from a
scrapped idea. We can revert this commit later to restore them.
2013-08-31 16:46:40 -04:00
SenseiKiwi ea1fc5f4c0 Reorganized and Renamed Classes
Moved tile entity classes to a separate package. Renamed some block
classes to match their in-game names (e.g. ChaosDoor -> UnstableDoor).
Moved TransientDoor to the blocks package. Cleaned up a little bit of
the code and automatically updated references to the classes that were
modified.
2013-08-31 16:43:18 -04:00
SenseiKiwi 4b5870339b Removed Obsolete Code from PocketManager
Removed obsolete code from PocketManager. Much of that functionality has
already been reimplemented in other classes.
2013-08-31 16:30:41 -04:00
SenseiKiwi f34b06b834 More Progress on Rewrite
More cleaning up errors and code. There were a lot of things that needed
simplifying. Rather than fix the 3 or 5 copies of the same function
throughout the code, I made an effort to use the same function and
delete its copies.

Created the BaseItemDoor class to hold all the basic door item methods
that don't vary between types. That helped cut down on fixing things.
Also renamed the door item classes to match their in-game  names.

There is still a ton of duplicate code out there.
2013-08-31 16:00:18 -04:00
SenseiKiwi d9056e551f More Progress on Rewrite
Continued fixing things across various classes to make them work with
our new core classes. I've also cleaned up indentation and random code
snippets along the way.
2013-08-31 12:58:35 -04:00
SenseiKiwi 5cabd3762e More Progress on Rewrite
Continued fixing things across various classes to make them work with
our new core classes.
2013-08-31 07:39:52 -04:00
SenseiKiwi 9930068775 Fixed PocketBuilder and More
1. Changed DungeonSchematic to use an external instance of Random rather
than initializing its own.
2. Created the Pair class, a strongly-typed tuple that was needed in
PocketBuilder.
3. Added a missing calculation in NewDimData for setting the packDepth
field during dungeon initialization.
4. Finished code missing in PocketBuilder. Changes listed above were
needed for this.
2013-08-30 16:27:27 -04:00
SenseiKiwi 8e8346864e Fixed DungeonSchematic
Modified DungeonSchematic to use the new link and dimension classes.
2013-08-30 10:57:08 -04:00
SenseiKiwi 934dcfde3d Flipped a Table
Replaced several core classes from DD with new classes to enforce
integrity checks. Rewriting everything that depended on those classes is
a massive undertaking but it should simplify our code and prevent the
many bugs we've seen lately. The rewrite isn't done yet, just committing
my progress so far.
2013-08-29 02:14:24 -04:00
SenseiKiwi 050bdd1090 Merging Changes to Master
Merging recent changes to master.
2013-08-26 02:11:24 -04:00
SenseiKiwi 30b8e98ad8 Minor Fixes to Old Dungeons
Fixed the two blocks sticking out in the multilevel maze that made a
staircase unusable. Put a floor in simpleDropHall so it's actually
usable rather than killing the player.
2013-08-26 01:59:37 -04:00
SenseiKiwi 02b96c0c05 Improved Dungeon Loot and Selection
DDLoot: Implemented a custom version of MC's generateChestContents() for
our own chests. It avoids two notable bugs that affect MC's version.

FillContainersOperation: Changed code to use
DDLoot.generateChestContents()

SchematicLoader: Fixed a bug in the way we calculated a seed for
selecting our dungeons that would cause certain seeds to dominate all
the others. Under certain circumstances, the function would only return
-1. That would make our dungeon selection severely biased. That was
resolved and the code was specifically tuned for seeding Java's Random
even for doors with nearly identical positions. The result was an
apparent major improvement in the randomness of dungeons.

ruins\rules.txt: Changed the dungeon generation rules to precisely match
the complicated scheme we had before. We're still using simple rules to
choose dungeons - I used a program to derive the effective distribution
of dungeon types that the old code would produce and converted it into
the current rule system.
2013-08-24 07:52:35 -04:00
SenseiKiwi dd9b1f0c65 Started Rewriting LinkData
Created NewLinkData and replaced references to the original LinkData.
Moved it to the mod_pocketDim.core package. Added Point4D, an immutable
point type for 3D integer coordinates with an added dimension ID.
2013-08-23 04:12:56 -04:00
SenseiKiwi 2b1d80f9f9 Fixed Config Loading Bug
Fixed a problem that caused bundled configs to not load sometimes.
2013-08-22 22:57:26 -04:00
SenseiKiwi 35e97b03e2 Merge remote-tracking branch 'upstream/master' 2013-08-22 17:43:25 -04:00
SenseiKiwi ddf94334e0 Merged Changes
Merged all pending updates and changes into the master branch.
2013-08-22 16:09:42 -04:00
SenseiKiwi db98086096 Merge branch 'master' of https://github.com/SenseiKiwi/DimDoors 2013-08-22 02:47:27 -04:00
SenseiKiwi 939ed771a8 Completed Dungeon Pack Implementation
Added code so that the mod loads dungeon packs stored in the custom
dungeons folder. Changed the code for loading bundled dungeons so that
they're loaded as dungeon packs. This means dungeon packs are now fully
integrated into the mod. The changes were tested and seem to be working
perfectly.
2013-08-22 02:25:26 -04:00
SenseiKiwi f1bfac3e16 Minor Change
Moved the getDimDungeonPack() function from SchematicLoader to
DungeonHelper so that DungeonHelper.RuinsPack could be a private
variable.
2013-08-21 14:49:41 -04:00
SenseiKiwi 0e67596ca0 Progress on Implementing Dungeon Packs
1. Integrated support for dungeon pack config options into the code
(i.e. we actually DO what the settings specify)
2. Added random transitions from one dungeon type to another. Dungeons
might also begin with a non-default pack.
3. Fixed a config reading bug that caused settings to be ignored and
some invalid settings wouldn't trigger exceptions. Also fixed other
dungeon pack bugs.
2013-08-21 14:26:10 -04:00
SenseiKiwi 99d9b5a2a1 Merge branch 'master' into DungeonPacks 2013-08-20 18:57:12 -04:00
SenseiKiwi 4487168b0b Merge remote-tracking branch 'upstream/master' into DungeonPacks 2013-08-20 18:56:58 -04:00
SenseiKiwi 4d1503db3f Minor Change
Minor change - fixing spacing that was messed up by Eclipse.
2013-08-20 18:55:26 -04:00
SenseiKiwi acab06115a Progress on Implementing Dungeon Packs
Added code for parsing dungeon pack config files. The settings for our
built-in dungeons are now read from a file instead of being hardcoded.
One or two settings aren't being accessed yet and we still don't search
for other dungeon packs in the custom dungeon folder.  That'll come in
another commit.
2013-08-20 18:54:30 -04:00
SenseiKiwi caf33bd866 Improved EventHookContainer
Made some changes to EventHookContainer.onWorldLoad() to remove
redundant code that encouraged bugs. Unfortunately, a lot of
link-related code needs to be rewritten to get rid of bugs, so that'll
come after dungeon packs are completed.
2013-08-17 20:32:30 -04:00
SenseiKiwi dc7289a048 Dungeon Selection Fix and Chain Config Change
Changed how Random is initialized in SchematicLoader to prevent issues
with dim doors in the same chunks leading to the same dungeon. The
selection seems much more varied now. Also changed the hardcoded config
for the default dungeon chains to the one we'll be using later (from a
file). For testing purposes.
2013-08-15 07:29:37 -04:00
SenseiKiwi 7537d6cd7a Decreased Default Gateway Generation Chance
Decreased the default chance of a gateway generating. This won't affect
users unless they clear their config files. The decision is based on
user feedback and recent experiments on how common gateways could be.
2013-08-15 05:35:03 -04:00
SenseiKiwi 6b69d3d138 Added Nether Gateway Chance Correction
Modified RiftGenerator to correct for the rarity of Rift Gateways in the
Nether. Our config settings allow us to set the probability that we will
attempt to generate a gateway in a given chunk. However, that doesn't
guarantee that a gateway will generate.

I collected a lot of data and determined that generation succeeds in the
Nether only about 15% of the time. That's compared to 30% in the
Overworld when counting oceans (which always fail) and about 75%
(sometimes higher) when traveling mainly on land.

RiftGenerator now corrects for this by multiplying the chance of
attempting to generate gateways in the Nether by 4. Gateways in the
Nether are still relatively rare and hard to find, but you'll
occasionally come across them now. Also reorganized the code a little
for clarify.
2013-08-07 22:11:10 -04:00
SenseiKiwi 68bf4a16c1 Merge remote-tracking branch 'upstream/master' into DungeonPacks 2013-08-06 05:30:19 -04:00
SenseiKiwi 0f3853c651 Merge remote-tracking branch 'upstream/master' into DungeonPacks 2013-08-05 20:17:15 -04:00
SenseiKiwi f372b9ccb5 Basic Configurable Dungeon Chains
Completed a basic version of configurable dungeon chains. Almost all of
the final funcionality is present. However, the configuration is
hardcoded at the moment, not read from a file. This was done for testing
purposes. I'll add reading from config files soon.

Dungeon packs are partially implemented. Built-in and custom dungeons
are currently thrown into the default pack, Ruins. The next step is to
generalize the dungeon registration code in DungeonHelper so that we can
detect dungeon packs, read their config files, and register dungeons
with their corresponding pack. dd-export will need to support packs as
well. dd-rift will have issues dealing with duplicate dungeon names
across packs, but this isn't a major concern and can be dealt with in
the long term.
2013-08-05 20:16:45 -04:00
SenseiKiwi 35329f9024 Adding DungeonChainRuleDefinition
For some odd reason, git didn't commit DungeonChainRuleDefinition in my
last commit. Adding it again now.
2013-08-05 09:50:00 -04:00
SenseiKiwi 101e9e4ce6 Progress on Implementing Dungeon Packs
Completed enough of the implementation and integration to compile DD.
Some portions of the code are only for testing and will be removed
later. The configuration for default dungeons is hardcoded - we can
parse config files once we're certain that dungeon chains work. At the
moment, dungeons generate but it doesn't seem like the rules we set are
being followed properly.

Renamed OptimizedRule to DungeonChainRule, and renamed the old
DungeonChainRule to DungeonChainRuleDefinition, to match the role of
each class better. Added some hax to DungeonGenerator to get packs
integrated - the implementation will be much cleaner once the new save
format is done.
2013-08-05 09:48:49 -04:00
SenseiKiwi e96fc02747 Progress on Implementing Dungeon Packs
Started implementing our support for dungeon packs. The code is not
usable yet and the mod is not functional at this stage. A few additional
changes should make it testable. A significant obstacle to implementing
dungeon packs easily is that DungeonGenerator doesn't have some
necessary information and shouldn't be modified. Even if it is modified,
old serialized instances wouldn't have the new fields initialized. I'm
having to create workarounds until we implement the new save format.

DungeonPack handles all of the logic of selecting a dungeon and
verifying whether its type is valid. It relies on DungeonChainRule and
OptimizedRule to check which dungeons should be generated next given a
list of the dungeons in a chain. DungeonType maps types in packs to ID
numbers and provides a reference to the pack that owns the type.
DungeonPackConfig will carry config information to be passed to the
DungeonPack constructor.
2013-08-04 19:27:34 -04:00
SenseiKiwi 2dfabccaa9 Minor Change
Overlooked a spelling mistake that would cause compilation errors.
2013-08-03 16:29:05 -04:00
SenseiKiwi b7327b2bf6 Minor Change
Minor changes to make the rift block-eating code meet our coding
conventions and to make it more intuitive.
2013-08-03 16:26:22 -04:00
SenseiKiwi 82c6e214b0 Fixed Glass Immunity to Rifts
Removed glass from the list of blocks immune to rifts. That was just a
temporary change so that I could check how rifts were destroying blocks
in a controlled manner.
2013-08-03 15:05:46 -04:00
SenseiKiwi 3ef7630f2c Made Rifts Destroy Blocks in Layers
Made it so rifts destroy blocks in layers rather than destroying random
surrounding blocks, even through indestructible blocks. This resolves
issue #24.
2013-08-03 13:56:48 -04:00
SenseiKiwi 3d04e9b9cc Made Rifts Check Block Hardness
Made rifts check block hardness while replacing blocks so that we can
avoid destroying strong or indestructible blocks from other mods.
Updated references throughout the code to use a function in BlockRift
for this purpose.
2013-08-03 06:12:56 -04:00
SenseiKiwi 84872acb97 Added Support for Activator Track
Added support for rotating the metadata of activator tracks.
2013-08-02 15:15:45 -04:00
SenseiKiwi 81bac7b7ff Added Support for More Metadata Rotations
Added support for rotating the metadata of powered tracks and detector
tracks. Also made a minor change to DungeonSchematic to protect its
internal state.
2013-08-02 14:46:47 -04:00
SenseiKiwi 62b1629a8a Fixed Metadata Rotation for Stairs
Changed BlockRotator so that missing stair types are recognized for
applying rotations. The general code for all stairs was there but the
block IDs for wooden and brick stairs weren't recognized. Also removed a
duplicate reference to nether brick stairs.
2013-08-02 13:49:24 -04:00
SenseiKiwi 350b2e2e2c Removing Test File
Removed the test file from the previous commit
2013-08-02 08:06:58 -04:00