When a player dies their inventory is normally scattered over the the area
in which they died. Plugins should be able to modify this behaviour by
defining whether or not the player's inventory will be dropped on the ground or
waiting for the player when they eventually respawn.
This commit adds the methods required to the PlayerDeathEvent for plugins
to be able to incorporate the behaviour mentioned as a simple boolean
flag.
By: Jerom van der Sar <jerom.sar@hotmail.com>
When we added the new API in EntityDamageEvent to give control over the
various things that modify the final damage done we caused a change in
behavior for users of the old #setDamage(double) method. Before changing
the damage would happen before the modifiers were calculated so they would
be based on the final damage value from the event. Now they are calculated
at the beginning so changing the damage does not change the modifiers.
To allow the old style and the new to coexist we now expose the vanilla
modifer calculations to the event in the form of Function objects. These
are used in #setDamage(double) to calculate the difference in the modifier
between the old damage and the new and apply this difference to the current
modifier. The difference is between the vanilla values for both damage
values and is applied on top of the event's modifier value as this should
make old and new API usage work together in a way that isn't surprising.
By: Travis Watkins <amaranth@ubuntu.com>
This commit adds API for the enchantment, armor, potion and other
modifications to damage done to an entity. These damage modifiers are each
editable editable via a getter and a setter. This addition allows for more
accurate modification and monitoring of damage done to/by an entity, as it
displays the final damage done as well.
By: Wesley Wolfe <wesley.d.wolfe+git@gmail.com>
Some blocks, such as beds, doors, or flowers, are actually composed of
multiple blocks when they are placed. Currently, to detect how many
blocks are actually modified a plugin has to perform various calculations
to determine the directions of relative blocks, many of which are
difficult to perform and can easily return false positives.
This commit adds in a BlockMultiPlaceEvent, which adds in easy support for
accessing all blocks modified by the placement of a block.
By: Nate Mortensen <nate.richard.mortensen@gmail.com>
This commit adds three new TargetReasons to EntityTargetEvent to address
missing cases where the event is not currently fired.
The first, TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, is used when a
neutral wolf is attacked, causing all nearby wolves to turn hostile and
attack the first wolf's target.
The second, TargetReason.REINFORCEMENT_TARGET, is used when a zombie summons
reinforcements and the new zombie targets the first zombie's target.
The third, TargetReason.COLLISION, is used when an iron golem collides with
a hostile entity, causing it to begin targeting the entity it collided with.
By: GJ <gjmcferrin@gmail.com>
Adds BUKKIT-5370, BUKKIT-5378, BUKKIT-5382, BUKKIT-5482. Covers zombie
villagers, ocelot babies, silverfish popping out of blocks, and mobs
spawning with a mount.
By: GJ <gjmcferrin@gmail.com>
Previously any entities spawned through dispensers (monster eggs) or
by nether portals were given the incorrect SpawnReason of SPAWNER_EGG.
This made it impossible to distinguish what exactly happened in regards
to the creature being spawned.
With the additional two SpawnReasons, plugins can identify sources of
creature spawning more easily and accuratly.
By: Kodekpl <Kodekgames@gmail.com>
API has been added to interface with Horses and to modify their inventories. A new event, HorseJumpEvent, has been added to be fired whenever a horse jumps.
This commit fixes BUKKIT-4393.
By: h31ix <zero_gravity@outlook.com>
This commit brings the InventoryClickEvent up to date with the new Minecraft
changes in 1.5.
InventoryDragEvent (thanks to @YLivay for his PR) is added to represent the
new "dragging" or "painting" functionality, where if you hold an itemstack and
click-drag over several slots, the items will be split evenly (left click) or
1 each (right click).
The ClickType enum is used to represent what the client did to trigger the
event.
The InventoryAction enum is reserved for future expansion, but will be used to
indicate the approximate result of the action.
Additionally, handling of creative inventory editing is improved with the new
InventoryCreativeEvent, and handling of numberkey presses is also improved
within InventoryClickEvent and CraftItemEvent.
Also, cancelling a creative click now displays properly on the client.
Adresses BUKKIT-3692, BUKKIT-4035, BUKKIT-3859 (new 1.5 events),
BUKKIT-2659, BUKKIT-3043, BUKKIT-2659, and BUKKIT-2897 (creative click events).
By: riking <rikingcoding@gmail.com>
This event is being called whenever a block or entity (e.g. hopper) tries to
move an item from one inventory to another inventory (one inventory may be
the hopper itself).
By: Dennis Bliefernicht <dennis.bliefernicht@triphoenix.de>