Added DeathTracker - a class for tracking the deaths of players on the
server while in pocket dimensions. It'll be used for generating skulls
for grave chests. Also removed PlayerTracker since it wasn't being used
for anything at all. I'm guessing it was supposed to be used for
something later. We can restore it if it's ever needed.
Cleaned up the code for initializing GatewayGenerator. We had some
static fields that didn't need to be static and we could just initialize
gateways from the class's constructor.
Moved a little of the regeneration code to BlockRift to reduce duplicate
code. Changed RiftRegenerator to iterate over loaded worlds instead of
all worlds. Removed forced rift generation call in
EventHookContainer.onWorldLoad() - I feel it would have minimal
benefits. Rifts now drop World Thread upon regeneration. Generally
cleaned up the code in FastRiftRegenerator and RiftRegenerator.
Removed code related to a correction factor that would compensate for
gateway generation failing a lot more frequently in the Nether. We don't
use that approach in the Nether anymore.
Added config settings for the chance of generating a Rift Gateway in a
Nether Fortress. Also made it so that DD does not override Nether
Fortress generation if fortress gateways are disabled in some way.
Changed rifts to consider block blast resistance instead of block
hardness. Some mods offer defensive blocks that stop explosions but have
low hardness. This addresses that issue. The minimum resistance allows
obsidian to resist rifts.
Fixed the code for retrieving textures for ItemRiftBlade,
ItemRiftSignature, and ItemRiftRemover. Renamed Rift Blade item texture
again due to capitalization issues. Replaced World Thread texture with a
dark variant of MC's String - we can switch to another texture later.
Cleaned up the code in FastRiftRegenerator - mostly spacing, but also
removed a pointless null check. It wouldn't matter because the reference
was being accessed before it was checked and it should be impossible for
it to be null.
Updated our code to stop Fabric of Reality platforms from generating
under exits all the time. Now they generate only when the supporting
blocks are replaceable (in which case they're replaced by FoR) or when
they're not opaque solids or have tile entities (then FoR generates on
top). The exit search algorithm treats replaceable non-liquid blocks as
air, so an attempt is made to build against the ground and not on top of
replaceable blocks. The area around the door is cleared of blocks to
avoid killing the player with lingering replaceable blocks that might be
harmful, like poison ivy.
Fixed a bug in BaseGateway that would cause it to still crash servers
during world generation. The import filters must be applied before
searching for doors because GatewayBlockFilter uses Forge-provided block
IDs and not the standard export values. Also fixed a comment in
yCoordHelper that cut off strangely.
Added chunk.setChunkModified() to other classes that were missing it. We
have several copies of setBlockDirectly() spread around that needed
updating. Also made pockets use FoR instead of glowstone. =P
Updated DDTeleporter to have a fixed minimum chance of sending the
player to the Nether when using a dungeon exit. This also allows players
to reach the Nether without ever having been there before using a Nether
portal - that was previously impossible since DD would not "know" that
the Nether existed. Also cleaned up the code a bit and possibly fixed a
bug that would cause players to get teleported into walls.