From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Sun, 6 Apr 2025 10:42:47 +0800 Subject: [PATCH] Fix SculkCatalyst exp skip diff --git a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java index 76c08499b704a6cb0cb95ce69b9a9248d69cc127..316bbf8c95e4803190897d66a0c7d8b4316f4164 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java @@ -28,6 +28,8 @@ public class EntityDeathEvent extends EntityEvent implements Cancellable { private float deathSoundVolume; private float deathSoundPitch; + private int rewardExp; // Leaves - exp fix + private boolean cancelled; @ApiStatus.Internal @@ -37,12 +39,19 @@ public class EntityDeathEvent extends EntityEvent implements Cancellable { @ApiStatus.Internal public EntityDeathEvent(@NotNull final LivingEntity livingEntity, @NotNull DamageSource damageSource, @NotNull final List drops, final int droppedExp) { + // Leaves start - exp fix + this(livingEntity, damageSource, drops, droppedExp, droppedExp); + } + + @ApiStatus.Internal + public EntityDeathEvent(@NotNull final LivingEntity livingEntity, @NotNull DamageSource damageSource, @NotNull final List drops, final int droppedExp, final int rewardExp) { super(livingEntity); this.damageSource = damageSource; this.drops = drops; this.dropExp = droppedExp; + this.rewardExp = rewardExp; } - + // Leaves end - exp fix @NotNull @Override public LivingEntity getEntity() { @@ -81,6 +90,7 @@ public class EntityDeathEvent extends EntityEvent implements Cancellable { */ public void setDroppedExp(int exp) { this.dropExp = exp; + this.rewardExp = exp; // Leaves - exp fix } /** @@ -210,6 +220,16 @@ public class EntityDeathEvent extends EntityEvent implements Cancellable { this.deathSoundPitch = pitch; } + // Leaves start - exp fix + public int getRewardExp() { + return rewardExp; + } + + public void setRewardExp(int rewardExp) { + this.rewardExp = rewardExp; + } + // Leaves end - exp fix + @Override public boolean isCancelled() { return this.cancelled; diff --git a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java index 6316a2f1d2dc0314397e33e6dbd354fb8bc50541..16d4e3d42710be5eb87372d31c0ea9935d441de0 100644 --- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java +++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java @@ -23,6 +23,7 @@ public class PlayerDeathEvent extends EntityDeathEvent { private Component deathMessage; private Component deathScreenMessageOverride = null; private boolean doExpDrop; + private boolean useApiExpDropStatus = false; // Leaves - exp fix private boolean keepLevel = false; private boolean keepInventory = false; @Deprecated @@ -82,8 +83,15 @@ public class PlayerDeathEvent extends EntityDeathEvent { this.showDeathMessages = true; this.deathMessage = LegacyComponentSerializer.legacySection().deserializeOrNull(deathMessage); this.doExpDrop = doExpDrop; + this.useApiExpDropStatus = true; // Leaves - exp fix } + // Leaves start - exp fix + public boolean forceUseEventDropStatus() { + return this.useApiExpDropStatus; + } + // Leaves end - exp fix + @NotNull @Override public Player getEntity() {