Update to Minecraft 1.19.4

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2023-03-15 03:30:00 +11:00
parent 90a887a912
commit 40076782ed
227 changed files with 2788 additions and 1621 deletions

View File

@@ -16,14 +16,16 @@ import net.minecraft.core.BlockPosition;
import net.minecraft.core.EnumDirection;
import net.minecraft.network.protocol.game.PacketPlayInCloseWindow;
import net.minecraft.resources.MinecraftKey;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.EntityPlayer;
import net.minecraft.server.level.WorldServer;
import net.minecraft.tags.DamageTypeTags;
import net.minecraft.util.Unit;
import net.minecraft.world.EnumHand;
import net.minecraft.world.IInventory;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.EntityDamageSource;
import net.minecraft.world.damagesource.EntityDamageSourceIndirect;
import net.minecraft.world.damagesource.DamageType;
import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityAreaEffectCloud;
@@ -97,7 +99,6 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryCrafting;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.craftbukkit.inventory.CraftMetaBook;
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
import org.bukkit.craftbukkit.util.CraftDamageSource;
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
import org.bukkit.entity.AbstractHorse;
@@ -235,8 +236,6 @@ import org.bukkit.inventory.meta.BookMeta;
import org.bukkit.potion.PotionEffect;
public class CraftEventFactory {
public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.ON_FIRE);
public static final DamageSource POISON = CraftDamageSource.copyOf(DamageSource.MAGIC);
public static org.bukkit.block.Block blockDamage; // For use in EntityDamageByBlockEvent
public static Entity entityDamage; // For use in EntityDamageByEntityEvent
@@ -852,7 +851,8 @@ public class CraftEventFactory {
}
private static EntityDamageEvent handleEntityDamageEvent(Entity entity, DamageSource source, Map<DamageModifier, Double> modifiers, Map<DamageModifier, Function<? super Double, Double>> modifierFunctions, boolean cancelled) {
if (source.isExplosion()) {
ResourceKey<DamageType> sourceType = source.typeHolder().unwrapKey().get();
if (source.is(DamageTypeTags.IS_EXPLOSION)) {
DamageCause damageCause;
Entity damager = entityDamage;
entityDamage = null;
@@ -879,25 +879,25 @@ public class CraftEventFactory {
entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled
}
return event;
} else if (source instanceof EntityDamageSource) {
Entity damager = source.getEntity();
} else if (source.getEntity() != null) {
Entity damager = source.getDirectEntity();
DamageCause cause = (source.isSweep()) ? DamageCause.ENTITY_SWEEP_ATTACK : DamageCause.ENTITY_ATTACK;
if (source instanceof EntityDamageSourceIndirect) {
damager = ((EntityDamageSourceIndirect) source).getProximateDamageSource();
if (source.isIndirect()) {
damager = source.getEntity();
if (damager.getBukkitEntity() instanceof ThrownPotion) {
cause = DamageCause.MAGIC;
} else if (damager.getBukkitEntity() instanceof Projectile) {
cause = DamageCause.PROJECTILE;
}
} else if ("thorns".equals(source.msgId)) {
} else if ("thorns".equals(source.getMsgId())) {
cause = DamageCause.THORNS;
} else if ("sonic_boom".equals(source.msgId)) {
} else if ("sonic_boom".equals(source.getMsgId())) {
cause = DamageCause.SONIC_BOOM;
}
return callEntityDamageEvent(damager, entity, cause, modifiers, modifierFunctions, cancelled);
} else if (source == DamageSource.OUT_OF_WORLD) {
} else if (sourceType == DamageTypes.OUT_OF_WORLD) {
EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, modifiers, modifierFunctions);
event.setCancelled(cancelled);
callEvent(event);
@@ -907,7 +907,7 @@ public class CraftEventFactory {
entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled
}
return event;
} else if (source == DamageSource.LAVA) {
} else if (sourceType == DamageTypes.LAVA) {
EntityDamageEvent event = (new EntityDamageByBlockEvent(blockDamage, entity.getBukkitEntity(), DamageCause.LAVA, modifiers, modifierFunctions));
event.setCancelled(cancelled);
@@ -925,16 +925,16 @@ public class CraftEventFactory {
} else if (blockDamage != null) {
DamageCause cause = null;
Block damager = blockDamage;
if (source == DamageSource.CACTUS || source == DamageSource.SWEET_BERRY_BUSH || source == DamageSource.STALAGMITE || "fallingStalactite".equals(source.msgId) || "anvil".equals(source.msgId)) {
if (sourceType == DamageTypes.CACTUS || sourceType == DamageTypes.SWEET_BERRY_BUSH || sourceType == DamageTypes.STALAGMITE || "fallingStalactite".equals(source.getMsgId()) || "anvil".equals(source.getMsgId())) {
cause = DamageCause.CONTACT;
} else if (source == DamageSource.HOT_FLOOR) {
} else if (sourceType == DamageTypes.HOT_FLOOR) {
cause = DamageCause.HOT_FLOOR;
} else if (source == DamageSource.MAGIC) {
} else if (sourceType == DamageTypes.MAGIC) {
cause = DamageCause.MAGIC;
} else if (source == DamageSource.IN_FIRE) {
} else if (sourceType == DamageTypes.IN_FIRE) {
cause = DamageCause.FIRE;
} else {
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.msgId));
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.getMsgId()));
}
EntityDamageEvent event = new EntityDamageByBlockEvent(damager, entity.getBukkitEntity(), cause, modifiers, modifierFunctions);
event.setCancelled(cancelled);
@@ -953,18 +953,18 @@ public class CraftEventFactory {
DamageCause cause = null;
CraftEntity damager = entityDamage.getBukkitEntity();
entityDamage = null;
if ("fallingStalactite".equals(source.msgId) || "fallingBlock".equals(source.msgId) || "anvil".equals(source.msgId)) {
if ("fallingStalactite".equals(source.getMsgId()) || "fallingBlock".equals(source.getMsgId()) || "anvil".equals(source.getMsgId())) {
cause = DamageCause.FALLING_BLOCK;
} else if (damager instanceof LightningStrike) {
cause = DamageCause.LIGHTNING;
} else if (source == DamageSource.FALL) {
} else if (sourceType == DamageTypes.FALL) {
cause = DamageCause.FALL;
} else if (source == DamageSource.DRAGON_BREATH) {
} else if (sourceType == DamageTypes.DRAGON_BREATH) {
cause = DamageCause.DRAGON_BREATH;
} else if (source == DamageSource.MAGIC) {
} else if (sourceType == DamageTypes.MAGIC) {
cause = DamageCause.MAGIC;
} else {
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.msgId));
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.getMsgId()));
}
EntityDamageEvent event = new EntityDamageByEntityEvent(damager, entity.getBukkitEntity(), cause, modifiers, modifierFunctions);
event.setCancelled(cancelled);
@@ -978,35 +978,35 @@ public class CraftEventFactory {
}
DamageCause cause = null;
if (source == DamageSource.IN_FIRE) {
if (sourceType == DamageTypes.IN_FIRE) {
cause = DamageCause.FIRE;
} else if (source == DamageSource.STARVE) {
} else if (sourceType == DamageTypes.STARVE) {
cause = DamageCause.STARVATION;
} else if (source == DamageSource.WITHER) {
} else if (sourceType == DamageTypes.WITHER) {
cause = DamageCause.WITHER;
} else if (source == DamageSource.IN_WALL) {
} else if (sourceType == DamageTypes.IN_WALL) {
cause = DamageCause.SUFFOCATION;
} else if (source == DamageSource.DROWN) {
} else if (sourceType == DamageTypes.DROWN) {
cause = DamageCause.DROWNING;
} else if (source == DamageSource.ON_FIRE) {
} else if (sourceType == DamageTypes.ON_FIRE) {
cause = DamageCause.FIRE_TICK;
} else if (source == MELTING) {
} else if (source.isMelting()) {
cause = DamageCause.MELTING;
} else if (source == POISON) {
} else if (source.isPoison()) {
cause = DamageCause.POISON;
} else if (source == DamageSource.MAGIC) {
} else if (sourceType == DamageTypes.MAGIC) {
cause = DamageCause.MAGIC;
} else if (source == DamageSource.FALL) {
} else if (sourceType == DamageTypes.FALL) {
cause = DamageCause.FALL;
} else if (source == DamageSource.FLY_INTO_WALL) {
} else if (sourceType == DamageTypes.FLY_INTO_WALL) {
cause = DamageCause.FLY_INTO_WALL;
} else if (source == DamageSource.CRAMMING) {
} else if (sourceType == DamageTypes.CRAMMING) {
cause = DamageCause.CRAMMING;
} else if (source == DamageSource.DRY_OUT) {
} else if (sourceType == DamageTypes.DRY_OUT) {
cause = DamageCause.DRYOUT;
} else if (source == DamageSource.FREEZE) {
} else if (sourceType == DamageTypes.FREEZE) {
cause = DamageCause.FREEZE;
} else if (source == DamageSource.GENERIC) {
} else {
cause = DamageCause.CUSTOM;
}
@@ -1014,7 +1014,7 @@ public class CraftEventFactory {
return callEntityDamageEvent(null, entity, cause, modifiers, modifierFunctions, cancelled);
}
throw new IllegalStateException(String.format("Unhandled damage of %s from %s", entity, source.msgId));
throw new IllegalStateException(String.format("Unhandled damage of %s from %s", entity, source.getMsgId()));
}
private static EntityDamageEvent callEntityDamageEvent(Entity damager, Entity damagee, DamageCause cause, Map<DamageModifier, Double> modifiers, Map<DamageModifier, Function<? super Double, Double>> modifierFunctions) {
@@ -1047,7 +1047,7 @@ public class CraftEventFactory {
Map<DamageModifier, Function<? super Double, Double>> modifierFunctions = new EnumMap<DamageModifier, Function<? super Double, Double>>(DamageModifier.class);
modifiers.put(DamageModifier.BASE, rawDamage);
modifierFunctions.put(DamageModifier.BASE, ZERO);
if ("fallingBlock".equals(source.msgId) || "anvil".equals(source.msgId)) {
if ("fallingBlock".equals(source.getMsgId()) || "anvil".equals(source.getMsgId())) {
modifiers.put(DamageModifier.HARD_HAT, hardHatModifier);
modifierFunctions.put(DamageModifier.HARD_HAT, hardHat);
}