Merge branch 'master' of https://github.com/MinecraftPortCentral/MCPC-Plus
Changed servermodname to "mcpc,forge,craftbukkit,fml" to support mcstats.
Fixed wrong servermodname.
Use plugin inheritance extractor from SpecialSource
Optimize reflection remapping

Combine reflection remap and inheritance extract into
a single pass, now in SpecialSource as "RemapperPreprocessor".
Reduces the times the class is read when all remapping
options are enabled from 3-pass to 2-pass.

About a 4% startup time performance increase observed
during testing with 31 plugins: https://gist.github.com/agaricusb/4728786
Enable plugin reflection remapping by default. Closes #13.

Adds support for plugins using (simple uses of) reflection.

UPGRADING NOTES:
- If you're upgrading from build 121+, which had reflection
remapping disabled by default, you can enable it by
setting 'reflect-remap-field: true' in bukkit.yml

- If your plugins suddenly break, this feature can be disabled
by setting 'reflect-remap-field: false' in bukkit.yml (and
please file issues for any problematic plugins).
Added new GameRegistry method for registering Bukkit Materials.

In past builds, all modded items/blocks would create a corresponding
bukkit material with the ID passed to the Item/Block class. The material
would be registered without a custom name and use a generic name like "X4077".
This would cause readability issues for plugins that would rely on the
name of a material such as ChestShop.
Now instead of registering a material with a default name of "XID", it
will now use the passed item/block name and use the form "MODID_NAME". If
no name is registered with the item/block, it will default to
"MODID_ITEMID". Keep in mind that the same material name will show up for
blocks that share ID's such as IC2's Solar Panel and Nuclear Reactor. Both
of these will appear as "IC2_BLOCKGENERATOR".
Fixed issue with items not registering materials.
Update to Bukkit 1.4.7-R1.0
Update snapshot version
Merge branch 'master' of ssh://github.com/icedream/MCPC-Plus
Fixed issue with certain items/blocks not registering bukkit materials.

* Added new enum helper 'replaceEnum' to assist in changing existing material names.
* Readded material registration to both Item/Block constructors. This was
needed since many mods do not register their items/blocks through
GameRegistry.
Updated version to 1.4.7-R1.1-SNAPSHOT for development towards next release.
Use the result of EntityPortalExitEvent. Fixes BUKKIT-3559.
Always use the set exit location for portal events. Fixes BUKKIT-3555.
Add CB signature compatibility to moveToWorld()

ServerConfigurationManager#respawnPlayer(EntityPlayerMP par1EntityPlayerMP, int par2, boolean par3)
is a vanilla method, which will be reobfuscated during compilation
and remapped from NMS by the plugin loader. (MCP: respawnPlayer, CB: respawnPlayer, obf: a)

However, the vanilla respawnPlayer calls a new CB method, of the same name
but with added arguments. CB names this method movePlayer, and since it is
a new method, it isn't reobfuscated nor remapped, and plugins may expect it
at the CB name.

Previously this new method was named with MCP's name respawnPlayer - matching
the vanilla method. This commit renames it to movePlayer, matching the
translated CBMCP source and improving NMS plugin compatibility, while
retaining vanilla compatibility (since this method doesn't exist in vanilla).
Fix players spawning above portals. Fixes BUKKIT-3542.

Vanilla does not check for blocks in which the player could
suffocate when changing dimension, so portals will happily spawn
players in blocks when using a portal under certain
circumstances. However, we currently check for these instances
and move the player up until they will not suffocate. This means
that players can sometimes be taken to above the target portal,
making it seem as if a portal was not created. Instead, we now
disable this suffocation check when moveToWorld is called from
changeDimension, mirroring vanilla behavior more accurately.
Always return a TravelAgent; Fixes BUKKIT-3541

Recent changes caused PlayerPortalEvent to suddenly return null
unexpectedly and could end up in NPEs resulting that did not before.
This commit addresses that situation by always ensuring a TravelAgent
instance is returned.

The TravelAgent for world 0 is returned arbitrarily in an effort to
compensate for plugins that are implementation dependent and expect some
form of a TravelAgent to be accessible in the event at all times.
Refactor processBlockPlace logic. Fixes BUKKIT-3406 and BUKKIT-3454

The previous logic was faulty since it lost the logic of "placing" the
block. It was also taking into account data that could have been
changed outside of the processing of this event, which is irrelevant
to the processing of this event.
Improve the item meta deserialization code-style

Fixed the ItemMetaFireworkTest

Add set power unit tests for FireworkMeta