diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/LivingEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/LivingEntityMixin.java index c53e8e1a..45c96536 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/LivingEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/LivingEntityMixin.java @@ -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); } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/ArclightEventDispatcherRegistry.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/ArclightEventDispatcherRegistry.java index 23bccc6b..dc858c25 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/ArclightEventDispatcherRegistry.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/ArclightEventDispatcherRegistry.java @@ -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()); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/EntityRegainHealthEventDispatcher.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/EntityRegainHealthEventDispatcher.java deleted file mode 100644 index fd790e73..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/EntityRegainHealthEventDispatcher.java +++ /dev/null @@ -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())); - } -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/WorldEventDispatcher.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/WorldEventDispatcher.java new file mode 100644 index 00000000..b732230f --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/event/WorldEventDispatcher.java @@ -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())); + } +}