0ae58c09a1
There was a TODO left there regarding the translated death message being used by plugins to identify the cause of death. This should be mitigated now because the LegacyComponentSerializer default implemenation uses our custom flattener which renders vanilla translatable components to their English representation.
80 lines
4 KiB
Diff
80 lines
4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Tue, 24 Dec 2019 00:35:31 +0000
|
|
Subject: [PATCH] PlayerDeathEvent#shouldDropExperience
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
|
index 3ce76cfb09f6f5eb55e950843bdd846b2b561116..dad291ad8cd16d24d587e771a8b60cfb5d0bce2a 100644
|
|
--- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
|
+++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
|
@@ -16,6 +16,7 @@ public class PlayerDeathEvent extends EntityDeathEvent {
|
|
private int newTotalExp = 0;
|
|
private boolean keepLevel = false;
|
|
private boolean keepInventory = false;
|
|
+ private boolean doExpDrop; // Paper - shouldDropExperience API
|
|
// Paper start - adventure
|
|
@org.jetbrains.annotations.ApiStatus.Internal
|
|
public PlayerDeathEvent(final @NotNull Player player, final @NotNull List<ItemStack> drops, final int droppedExp, final @Nullable net.kyori.adventure.text.Component deathMessage) {
|
|
@@ -29,11 +30,18 @@ public class PlayerDeathEvent extends EntityDeathEvent {
|
|
|
|
@org.jetbrains.annotations.ApiStatus.Internal
|
|
public PlayerDeathEvent(final @NotNull Player player, final @NotNull List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, final @Nullable net.kyori.adventure.text.Component deathMessage) {
|
|
+ // Paper start - shouldDropExperience API
|
|
+ this(player, drops, droppedExp, newExp, newTotalExp, newLevel, deathMessage, true);
|
|
+ }
|
|
+ @org.jetbrains.annotations.ApiStatus.Internal
|
|
+ public PlayerDeathEvent(final @NotNull Player player, final @NotNull List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, final @Nullable net.kyori.adventure.text.Component deathMessage, final boolean doExpDrop) {
|
|
+ // Paper end - shouldDropExperience API
|
|
super(player, drops, droppedExp);
|
|
this.newExp = newExp;
|
|
this.newTotalExp = newTotalExp;
|
|
this.newLevel = newLevel;
|
|
this.deathMessage = deathMessage;
|
|
+ this.doExpDrop = doExpDrop; // Paper - shouldDropExperience API
|
|
}
|
|
// Paper end - adventure
|
|
|
|
@@ -48,11 +56,19 @@ public class PlayerDeathEvent extends EntityDeathEvent {
|
|
|
|
@Deprecated // Paper
|
|
public PlayerDeathEvent(@NotNull final Player player, @NotNull final List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, @Nullable final String deathMessage) {
|
|
+ // Paper start - shouldDropExperience API
|
|
+ this(player, drops, droppedExp, newExp, newTotalExp, newLevel, deathMessage, true);
|
|
+ }
|
|
+
|
|
+ @Deprecated // Paper
|
|
+ public PlayerDeathEvent(@NotNull final Player player, @NotNull final List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, @Nullable final String deathMessage, boolean doExpDrop) {
|
|
+ // Paper end - shouldDropExperience API
|
|
super(player, drops, droppedExp);
|
|
this.newExp = newExp;
|
|
this.newTotalExp = newTotalExp;
|
|
this.newLevel = newLevel;
|
|
this.deathMessage = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserializeOrNull(deathMessage); // Paper
|
|
+ this.doExpDrop = doExpDrop; // Paper - shouldDropExperience API
|
|
}
|
|
|
|
@Deprecated // Paper
|
|
@@ -90,6 +106,22 @@ public class PlayerDeathEvent extends EntityDeathEvent {
|
|
}
|
|
// Paper end
|
|
|
|
+ // Paper start - shouldDropExperience API
|
|
+ /**
|
|
+ * @return should experience be dropped from this death
|
|
+ */
|
|
+ public boolean shouldDropExperience() {
|
|
+ return doExpDrop;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @param doExpDrop sets if experience should be dropped from this death
|
|
+ */
|
|
+ public void setShouldDropExperience(boolean doExpDrop) {
|
|
+ this.doExpDrop = doExpDrop;
|
|
+ }
|
|
+ // Paper end - shouldDropExperience API
|
|
+
|
|
@NotNull
|
|
@Override
|
|
public Player getEntity() {
|