Merge branch 'master' of https://github.com/nallar/MCPC-Plus into nallar-master
Merge branch 'master' of https://github.com/MinecraftPortCentral/MCPC-Plus
Merge branch 'master' of https://github.com/MinecraftPortCentral/MCPC-Plus
Merge branch 'master' of https://github.com/MinecraftPortCentral/MCPC-Plus
Merge OniBait's Hydra Fix. Fixes #762

* Handle Complex part with non-complex parent entity
Merge pull request #881 from nallar/master

Log the transformer which broke if transforming fails even when debug classloading is disabled.
Fix things using wall time running too fast. Fixes BUKKIT-4155

When converting things in Minecraft to use wall time instead of ticks I
realized we'd run into integer division rounding issues and could have
updates that end up counting as zero ticks. To compensate for this the
code ensures we always process at least one tick. However, every time we
end up with zero ticks the next time we have an extra tick due to rounding
the other way with the leftovers. This means we are going far too fast and
should not have this at least one tick logic at all.

On top of this some potions rely on the number of ticks they run and not
just the amount of time they last and so potions were put back to running
with ticks entirely.

Remapped by Srg2Source from Bukkit/CraftBukkit@66e25758ad086cdd11dc5330b0655c3fc87e3c84
Revert "Add delay to hopper even if it doesn't do anything."

This reverts commit f5388e8f94e2cbab76c2255fd872c289e83100a0.

Remapped by Srg2Source from Bukkit/CraftBukkit@218b84792dc32f0257e8bf3415ba3b47e717187f
Always process movement for vehicles and passengers. Fixes BUKKIT-4142

As an optimization we don't do any movement processing on entities that
have not moved. However, players in minecarts trigger this condition when
the minecart is moving on its own. This causes issues with things that rely
on player collision like tripwires. To correct this and any future related
issues we always handle movement for passengers and their vehicles even
if one of the two hasn't moved since they are linked.

Remapped by Srg2Source from Bukkit/CraftBukkit@a36b37614d6a325ca0bf4214ab7cb88088b17a53
Move world generator warning to CraftBukkit. Fixes BUKKIT-2565

Remapped by Srg2Source from Bukkit/CraftBukkit@8205884a87f3df56f0a6876080d9c7e3e4fd5fd1
Update to Forge 7.8.0.690
Update README compilation instructions
Improve InventoryCloseEvent handling. Fixes BUKKIT-3286

Currently there are several cases where a player will have their inventory
screen closed client side but we will not call an event. To correct this
we call the event when the server is the cause of the inventory closing
instead of just when the client is the cause. We also ensure the server is
closing the inventory reliably so we get the events. Additionally this
commit also calls the event when a player disconnects which will handle
kicks, quits, and server shutdown.

Remapped by Srg2Source from Bukkit/CraftBukkit@9d57bfd83ba961af767b25e5f221b057dbf23ac5
Fix animal spawning ignoring limits. Fixes BUKKIT-4180

Minecraft 1.5.2 changed mob spawning by ignoring persistent mobs from the
mob count. In CraftBukkit all mobs that previously used a separate hard
coded persistence system were ported to instead use this one. This causes
all animals to be persistent by default and thus never be counted. To
correct this issue we consider if the mob would be considered persistent
in the hard coded system as well when deciding if a mob should count.

Remapped by Srg2Source from Bukkit/CraftBukkit@482c4c3d1ae8da07178139f95ca218f0be598f5b
Fix typo/logic error in previous commit

Remapped by Srg2Source from Bukkit/CraftBukkit@7d19b67e256b0356a2b7affd169ac672e422ae5f
Send block updates even when applyPhysics is false.  Fixes BUKKIT-3971 The CraftBlock class is setting bit 0x4 of the update flag when bit 0x2 should in fact be set here. Bit 0x2 means "do updates"; bit 0x4 means "don't do updates if the world is static, even when bit 0x2 is set".

Remapped by Srg2Source from Bukkit/CraftBukkit@b5455183db43b6614d7f6aa3fe2ca832055c96c0
Correct event handling for dispensing filled buckets. Fixes BUKKIT-4046

We only go through event creation and calling when dispensing filled buckets
if the bucket is able to place its liquid. However, the check for this is
incorrect so the event is not called when a block liquids can destroy is
in front of the dispenser. This commit fixes the check to match the checks
vanilla does when actually using the bucket.

Remapped by Srg2Source from Bukkit/CraftBukkit@33342ecc471d3923e3c7d2eec2a0444b5489b9f1
Pass correct block when dispensing empty buckets. Fixes BUKKIT-3668

Remapped by Srg2Source from Bukkit/CraftBukkit@d1e1c15310eb89775ef64f3d4465d8d79507f8d5
Fix NPE in EntityTargetEvent when calling resetTask() twice. Fixes #877.

In vanilla, EntityAIAttackCollide resetTask() can be called twice, however,
CB adds an event call in this code which makes it non-idempotent: entityTarget
is nulled, but then on the next call entityTarget is dereferenced. To fix the
NPE when mods call resetTask() twice, we add a null check.
Add support for coremods improperly handling non-existent classes. Fixes #889.

Some coremod transformers will throw exceptions when given a null class,
rather than either returning null or supplying new bytecode to define the
requested class. Since the transformers are executed in a loop, this exception
breaks out of the loop and blocks other transformers from running on the class.

To fix this, we treat an exception thrown from transforming a null class as
if the transformer did not run, therefore allowing others to take a crack at
defining the class. Fixes log spam with CodeChickenCore, closes #889.