mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-14 11:45:52 -07:00
@@ -0,0 +1,20 @@
|
||||
--- a/net/minecraft/world/effect/HealOrHarmMobEffect.java
|
||||
+++ b/net/minecraft/world/effect/HealOrHarmMobEffect.java
|
||||
@@ -17,7 +17,7 @@
|
||||
public void applyEffectTick(EntityLiving entityliving, int i) {
|
||||
super.applyEffectTick(entityliving, i);
|
||||
if (this.isHarm == entityliving.isInvertedHealAndHarm()) {
|
||||
- entityliving.heal((float) Math.max(4 << i, 0));
|
||||
+ entityliving.heal((float) Math.max(4 << i, 0), org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC); // CraftBukkit
|
||||
} else {
|
||||
entityliving.hurt(entityliving.damageSources().magic(), (float) (6 << i));
|
||||
}
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
if (this.isHarm == entityliving.isInvertedHealAndHarm()) {
|
||||
j = (int) (d0 * (double) (4 << i) + 0.5D);
|
||||
- entityliving.heal((float) j);
|
||||
+ entityliving.heal((float) j, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC); // CraftBukkit
|
||||
} else {
|
||||
j = (int) (d0 * (double) (6 << i) + 0.5D);
|
||||
if (entity == null) {
|
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/world/effect/HungerMobEffect.java
|
||||
+++ b/net/minecraft/world/effect/HungerMobEffect.java
|
||||
@@ -15,7 +15,7 @@
|
||||
if (entityliving instanceof EntityHuman) {
|
||||
EntityHuman entityhuman = (EntityHuman) entityliving;
|
||||
|
||||
- entityhuman.causeFoodExhaustion(0.005F * (float) (i + 1));
|
||||
+ entityhuman.causeFoodExhaustion(0.005F * (float) (i + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent
|
||||
}
|
||||
|
||||
}
|
@@ -1,67 +0,0 @@
|
||||
--- a/net/minecraft/world/effect/MobEffectList.java
|
||||
+++ b/net/minecraft/world/effect/MobEffectList.java
|
||||
@@ -19,6 +19,14 @@
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.world.entity.player.EntityHuman;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import net.minecraft.network.protocol.game.PacketPlayOutUpdateHealth;
|
||||
+import net.minecraft.server.level.EntityPlayer;
|
||||
+import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||
+import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
||||
+// CraftBukkit end
|
||||
+
|
||||
public class MobEffectList {
|
||||
|
||||
private final Map<AttributeBase, AttributeModifier> attributeModifiers = Maps.newHashMap();
|
||||
@@ -55,26 +63,35 @@
|
||||
public void applyEffectTick(EntityLiving entityliving, int i) {
|
||||
if (this == MobEffects.REGENERATION) {
|
||||
if (entityliving.getHealth() < entityliving.getMaxHealth()) {
|
||||
- entityliving.heal(1.0F);
|
||||
+ entityliving.heal(1.0F, RegainReason.MAGIC_REGEN); // CraftBukkit
|
||||
}
|
||||
} else if (this == MobEffects.POISON) {
|
||||
if (entityliving.getHealth() > 1.0F) {
|
||||
- entityliving.hurt(entityliving.damageSources().magic(), 1.0F);
|
||||
+ entityliving.hurt(entityliving.damageSources().poison, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON
|
||||
}
|
||||
} else if (this == MobEffects.WITHER) {
|
||||
entityliving.hurt(entityliving.damageSources().wither(), 1.0F);
|
||||
} else if (this == MobEffects.HUNGER && entityliving instanceof EntityHuman) {
|
||||
- ((EntityHuman) entityliving).causeFoodExhaustion(0.005F * (float) (i + 1));
|
||||
+ ((EntityHuman) entityliving).causeFoodExhaustion(0.005F * (float) (i + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent
|
||||
} else if (this == MobEffects.SATURATION && entityliving instanceof EntityHuman) {
|
||||
if (!entityliving.level().isClientSide) {
|
||||
- ((EntityHuman) entityliving).getFoodData().eat(i + 1, 1.0F);
|
||||
+ // CraftBukkit start
|
||||
+ EntityHuman entityhuman = (EntityHuman) entityliving;
|
||||
+ int oldFoodLevel = entityhuman.getFoodData().foodLevel;
|
||||
+ org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, i + 1 + oldFoodLevel);
|
||||
+ if (!event.isCancelled()) {
|
||||
+ entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F);
|
||||
+ }
|
||||
+
|
||||
+ ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate();
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
} else if ((this != MobEffects.HEAL || entityliving.isInvertedHealAndHarm()) && (this != MobEffects.HARM || !entityliving.isInvertedHealAndHarm())) {
|
||||
if (this == MobEffects.HARM && !entityliving.isInvertedHealAndHarm() || this == MobEffects.HEAL && entityliving.isInvertedHealAndHarm()) {
|
||||
entityliving.hurt(entityliving.damageSources().magic(), (float) (6 << i));
|
||||
}
|
||||
} else {
|
||||
- entityliving.heal((float) Math.max(4 << i, 0));
|
||||
+ entityliving.heal((float) Math.max(4 << i, 0), RegainReason.MAGIC); // CraftBukkit
|
||||
}
|
||||
|
||||
}
|
||||
@@ -95,7 +112,7 @@
|
||||
}
|
||||
} else {
|
||||
j = (int) (d0 * (double) (4 << i) + 0.5D);
|
||||
- entityliving.heal((float) j);
|
||||
+ entityliving.heal((float) j, RegainReason.MAGIC); // CraftBukkit
|
||||
}
|
||||
|
||||
}
|
@@ -1,12 +1,12 @@
|
||||
--- a/net/minecraft/world/effect/MobEffects.java
|
||||
+++ b/net/minecraft/world/effect/MobEffects.java
|
||||
@@ -73,6 +73,10 @@
|
||||
@@ -47,6 +47,10 @@
|
||||
public MobEffects() {}
|
||||
|
||||
private static MobEffectList register(int i, String s, MobEffectList mobeffectlist) {
|
||||
- return (MobEffectList) IRegistry.registerMapping(BuiltInRegistries.MOB_EFFECT, i, s, mobeffectlist);
|
||||
private static MobEffectList register(String s, MobEffectList mobeffectlist) {
|
||||
- return (MobEffectList) IRegistry.register(BuiltInRegistries.MOB_EFFECT, s, mobeffectlist);
|
||||
+ // CraftBukkit start
|
||||
+ mobeffectlist = (MobEffectList) IRegistry.registerMapping(BuiltInRegistries.MOB_EFFECT, i, s, mobeffectlist);
|
||||
+ mobeffectlist = (MobEffectList) IRegistry.register(BuiltInRegistries.MOB_EFFECT, s, mobeffectlist);
|
||||
+ org.bukkit.potion.PotionEffectType.registerPotionEffectType(new org.bukkit.craftbukkit.potion.CraftPotionEffectType(mobeffectlist));
|
||||
+ return mobeffectlist;
|
||||
+ // CraftBukkit end
|
||||
|
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/world/effect/PoisonMobEffect.java
|
||||
+++ b/net/minecraft/world/effect/PoisonMobEffect.java
|
||||
@@ -12,7 +12,7 @@
|
||||
public void applyEffectTick(EntityLiving entityliving, int i) {
|
||||
super.applyEffectTick(entityliving, i);
|
||||
if (entityliving.getHealth() > 1.0F) {
|
||||
- entityliving.hurt(entityliving.damageSources().magic(), 1.0F);
|
||||
+ entityliving.hurt(entityliving.damageSources().poison, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/world/effect/RegenerationMobEffect.java
|
||||
+++ b/net/minecraft/world/effect/RegenerationMobEffect.java
|
||||
@@ -12,7 +12,7 @@
|
||||
public void applyEffectTick(EntityLiving entityliving, int i) {
|
||||
super.applyEffectTick(entityliving, i);
|
||||
if (entityliving.getHealth() < entityliving.getMaxHealth()) {
|
||||
- entityliving.heal(1.0F);
|
||||
+ entityliving.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC_REGEN); // CraftBukkit
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
--- a/net/minecraft/world/effect/SaturationMobEffect.java
|
||||
+++ b/net/minecraft/world/effect/SaturationMobEffect.java
|
||||
@@ -3,6 +3,11 @@
|
||||
import net.minecraft.world.entity.EntityLiving;
|
||||
import net.minecraft.world.entity.player.EntityHuman;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||
+// CraftBukkit end
|
||||
+
|
||||
class SaturationMobEffect extends InstantMobEffect {
|
||||
|
||||
protected SaturationMobEffect(MobEffectInfo mobeffectinfo, int i) {
|
||||
@@ -15,7 +20,15 @@
|
||||
if (!entityliving.level().isClientSide && entityliving instanceof EntityHuman) {
|
||||
EntityHuman entityhuman = (EntityHuman) entityliving;
|
||||
|
||||
- entityhuman.getFoodData().eat(i + 1, 1.0F);
|
||||
+ // CraftBukkit start
|
||||
+ int oldFoodLevel = entityhuman.getFoodData().foodLevel;
|
||||
+ org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, i + 1 + oldFoodLevel);
|
||||
+ if (!event.isCancelled()) {
|
||||
+ entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F);
|
||||
+ }
|
||||
+
|
||||
+ ((CraftPlayer) entityhuman.getBukkitEntity()).sendHealthUpdate();
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user