Provide modifier functions to EntityDamageEvent. Fixes BUKKIT-5688

This commit is contained in:
Wesley Wolfe 2014-07-13 00:04:32 -05:00
parent 319a9c20eb
commit c7398b9fdf

View file

@ -8,6 +8,7 @@ import java.util.Map;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Functions; import com.google.common.base.Functions;
import net.minecraft.server.ChunkCoordinates; import net.minecraft.server.ChunkCoordinates;
import net.minecraft.server.Container; import net.minecraft.server.Container;
import net.minecraft.server.DamageSource; import net.minecraft.server.DamageSource;
@ -80,8 +81,6 @@ import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.BookMeta;
import com.google.common.collect.ImmutableMap;
public class CraftEventFactory { public class CraftEventFactory {
public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN); public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN);
public static final DamageSource POISON = CraftDamageSource.copyOf(DamageSource.MAGIC); public static final DamageSource POISON = CraftDamageSource.copyOf(DamageSource.MAGIC);
@ -570,7 +569,14 @@ public class CraftEventFactory {
if (entity instanceof EntityEnderCrystal && !(source instanceof EntityDamageSource)) { if (entity instanceof EntityEnderCrystal && !(source instanceof EntityDamageSource)) {
return false; return false;
} }
EntityDamageEvent event = handleEntityDamageEvent(entity, source, new EnumMap<DamageModifier, Double>(ImmutableMap.of(DamageModifier.BASE, (double) damage)), null);
final EnumMap<DamageModifier, Double> modifiers = new EnumMap<DamageModifier, Double>(DamageModifier.class);
final EnumMap<DamageModifier, Function<? super Double, Double>> functions = new EnumMap(DamageModifier.class);
modifiers.put(DamageModifier.BASE, damage);
functions.put(DamageModifier.BASE, ZERO);
final EntityDamageEvent event = handleEntityDamageEvent(entity, source, modifiers, functions);
if (event == null) { if (event == null) {
return false; return false;
} }