Move CraftBukkit per-file patches

By: Initial <noreply+automated@papermc.io>
This commit is contained in:
CraftBukkit/Spigot
2024-12-11 22:26:36 +01:00
parent a4de181b77
commit a265d64138
583 changed files with 71 additions and 857 deletions

View File

@@ -0,0 +1,20 @@
--- a/net/minecraft/world/effect/HealOrHarmMobEffect.java
+++ b/net/minecraft/world/effect/HealOrHarmMobEffect.java
@@ -17,7 +17,7 @@
@Override
public boolean applyEffectTick(WorldServer worldserver, EntityLiving entityliving, int 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.hurtServer(worldserver, entityliving.damageSources().magic(), (float) (6 << i));
}
@@ -31,7 +31,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) {

View File

@@ -0,0 +1,11 @@
--- a/net/minecraft/world/effect/HungerMobEffect.java
+++ b/net/minecraft/world/effect/HungerMobEffect.java
@@ -13,7 +13,7 @@
@Override
public boolean applyEffectTick(WorldServer worldserver, EntityLiving entityliving, int i) {
if (entityliving instanceof EntityHuman entityhuman) {
- entityhuman.causeFoodExhaustion(0.005F * (float) (i + 1));
+ entityhuman.causeFoodExhaustion(0.005F * (float) (i + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent
}
return true;

View File

@@ -0,0 +1,15 @@
--- a/net/minecraft/world/effect/InfestedMobEffect.java
+++ b/net/minecraft/world/effect/InfestedMobEffect.java
@@ -48,7 +48,11 @@
entitysilverfish.moveTo(d0, d1, d2, worldserver.getRandom().nextFloat() * 360.0F, 0.0F);
entitysilverfish.setDeltaMovement(new Vec3D(vector3f));
- worldserver.addFreshEntity(entitysilverfish);
+ // CraftBukkit start
+ if (!worldserver.addFreshEntity(entitysilverfish, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.POTION_EFFECT)) {
+ return;
+ }
+ // CraftBukkit end
entitysilverfish.playSound(SoundEffects.SILVERFISH_HURT);
}
}

View File

@@ -0,0 +1,23 @@
--- a/net/minecraft/world/effect/MobEffectUtil.java
+++ b/net/minecraft/world/effect/MobEffectUtil.java
@@ -50,13 +50,19 @@
}
public static List<EntityPlayer> addEffectToPlayersAround(WorldServer worldserver, @Nullable Entity entity, Vec3D vec3d, double d0, MobEffect mobeffect, int i) {
+ // CraftBukkit start
+ return addEffectToPlayersAround(worldserver, entity, vec3d, d0, mobeffect, i, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.UNKNOWN);
+ }
+
+ public static List<EntityPlayer> addEffectToPlayersAround(WorldServer worldserver, @Nullable Entity entity, Vec3D vec3d, double d0, MobEffect mobeffect, int i, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) {
+ // CraftBukkit end
Holder<MobEffectList> holder = mobeffect.getEffect();
List<EntityPlayer> list = worldserver.getPlayers((entityplayer) -> {
return entityplayer.gameMode.isSurvival() && (entity == null || !entity.isAlliedTo((Entity) entityplayer)) && vec3d.closerThan(entityplayer.position(), d0) && (!entityplayer.hasEffect(holder) || entityplayer.getEffect(holder).getAmplifier() < mobeffect.getAmplifier() || entityplayer.getEffect(holder).endsWithin(i - 1));
});
list.forEach((entityplayer) -> {
- entityplayer.addEffect(new MobEffect(mobeffect), entity);
+ entityplayer.addEffect(new MobEffect(mobeffect), entity, cause); // CraftBukkit
});
return list;
}

View File

@@ -0,0 +1,11 @@
--- a/net/minecraft/world/effect/OozingMobEffect.java
+++ b/net/minecraft/world/effect/OozingMobEffect.java
@@ -52,7 +52,7 @@
if (entityslime != null) {
entityslime.setSize(2, true);
entityslime.moveTo(d0, d1, d2, world.getRandom().nextFloat() * 360.0F, 0.0F);
- world.addFreshEntity(entityslime);
+ world.addFreshEntity(entityslime, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.POTION_EFFECT); // CraftBukkit
}
}

View File

@@ -0,0 +1,11 @@
--- a/net/minecraft/world/effect/PoisonMobEffect.java
+++ b/net/minecraft/world/effect/PoisonMobEffect.java
@@ -14,7 +14,7 @@
@Override
public boolean applyEffectTick(WorldServer worldserver, EntityLiving entityliving, int i) {
if (entityliving.getHealth() > 1.0F) {
- entityliving.hurtServer(worldserver, entityliving.damageSources().magic(), 1.0F);
+ entityliving.hurtServer(worldserver, entityliving.damageSources().poison(), 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON
}
return true;

View File

@@ -0,0 +1,11 @@
--- a/net/minecraft/world/effect/RegenerationMobEffect.java
+++ b/net/minecraft/world/effect/RegenerationMobEffect.java
@@ -12,7 +12,7 @@
@Override
public boolean applyEffectTick(WorldServer worldserver, EntityLiving entityliving, int i) {
if (entityliving.getHealth() < entityliving.getMaxHealth()) {
- entityliving.heal(1.0F);
+ entityliving.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.MAGIC_REGEN); // CraftBukkit
}
return true;

View File

@@ -0,0 +1,31 @@
--- a/net/minecraft/world/effect/SaturationMobEffect.java
+++ b/net/minecraft/world/effect/SaturationMobEffect.java
@@ -4,6 +4,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) {
@@ -13,7 +18,15 @@
@Override
public boolean applyEffectTick(WorldServer worldserver, EntityLiving entityliving, int i) {
if (entityliving instanceof EntityHuman entityhuman) {
- 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
}
return true;