Fix EntityRegainHealthEvent called twice.
This commit is contained in:
parent
eb065aa667
commit
58552371bf
@ -776,9 +776,11 @@ public abstract class LivingEntityMixin extends EntityMixin implements LivingEnt
|
||||
|
||||
@Redirect(method = "heal", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;setHealth(F)V"))
|
||||
public void arclight$healEvent(LivingEntity livingEntity, float health) {
|
||||
EntityRegainHealthEvent.RegainReason regainReason = arclight$regainReason == null ? EntityRegainHealthEvent.RegainReason.CUSTOM : arclight$regainReason;
|
||||
arclight$regainReason = null;
|
||||
float f = this.getHealth();
|
||||
float amount = health - f;
|
||||
EntityRegainHealthEvent event = new EntityRegainHealthEvent(this.getBukkitEntity(), amount, arclight$regainReason == null ? EntityRegainHealthEvent.RegainReason.CUSTOM : arclight$regainReason);
|
||||
EntityRegainHealthEvent event = new EntityRegainHealthEvent(this.getBukkitEntity(), amount, regainReason);
|
||||
if (this.valid) {
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ public abstract class ArclightEventDispatcherRegistry {
|
||||
MinecraftForge.EVENT_BUS.register(new BlockBreakEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new BlockPlaceEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new EntityPotionEffectEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new EntityRegainHealthEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new WorldEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new EntityEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new NetworkEventDispatcher());
|
||||
MinecraftForge.EVENT_BUS.register(new EntityTeleportEventDispatcher());
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
package io.izzel.arclight.common.mod.server.event;
|
||||
|
||||
import io.izzel.arclight.common.bridge.entity.EntityBridge;
|
||||
import io.izzel.arclight.common.bridge.world.WorldBridge;
|
||||
import net.minecraftforge.event.entity.living.LivingHealEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||
import org.bukkit.event.world.WorldLoadEvent;
|
||||
|
||||
public class EntityRegainHealthEventDispatcher {
|
||||
|
||||
@SubscribeEvent(receiveCanceled = true)
|
||||
public void onLivingHeal(LivingHealEvent event) {
|
||||
EntityRegainHealthEvent bukkitEvent = ArclightEventFactory.callEntityRegainHealthEvent(((EntityBridge) event.getEntity()).bridge$getBukkitEntity(),
|
||||
event.getAmount(), EntityRegainHealthEvent.RegainReason.CUSTOM);
|
||||
event.setAmount((float) bukkitEvent.getAmount());
|
||||
if (bukkitEvent.isCancelled()) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
Bukkit.getPluginManager().callEvent(new WorldLoadEvent(((WorldBridge) event.getWorld()).bridge$getWorld()));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package io.izzel.arclight.common.mod.server.event;
|
||||
|
||||
import io.izzel.arclight.common.bridge.world.WorldBridge;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.world.WorldLoadEvent;
|
||||
|
||||
public class WorldEventDispatcher {
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
Bukkit.getPluginManager().callEvent(new WorldLoadEvent(((WorldBridge) event.getWorld()).bridge$getWorld()));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user