aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0445-Add-experience-points-API.patch
blob: a0add5e83756dae8d3ff49334b55a3f9ad761bc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Lukas Planz <lukas.planz@web.de>
Date: Tue, 5 Sep 2023 20:33:52 +0200
Subject: [PATCH] Add experience points API


diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 9261f06e332f8db94b2ef7bc01f5b0e61422bcb2..f08b1a2ec8815efcaaf1371e20eb1461a5f2d359 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -1902,6 +1902,45 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
      * @param exp New total experience points
      */
     public void setTotalExperience(int exp);
+    // Paper start
+    /**
+     * Gets the players total amount of experience points he collected to reach the current level and level progress.
+     *
+     * <p>This method differs from {@link #getTotalExperience()} in that this method always returns an
+     * up-to-date value that reflects the players{@link #getLevel() level} and {@link #getExp() level progress}</p>
+     *
+     * @return Current total experience points
+     * @see #getLevel()
+     * @see #getExp()
+     * @see #setExperienceLevelAndProgress(int)
+     */
+    @org.jetbrains.annotations.Range(from = 0, to = Integer.MAX_VALUE) int calculateTotalExperiencePoints();
+
+    /**
+     * Updates the players level and level progress to that what would be reached when the total amount of experience
+     * had been collected.
+     *
+     * <p>This method differs from {@link #setTotalExperience(int)} in that this method actually updates the
+     * {@link #getLevel() level} and {@link #getExp() level progress} so that a subsequent call of
+     * {@link #calculateTotalExperiencePoints()} yields the same amount of points that have been set</p>
+     *
+     * @param totalExperience New total experience points
+     * @see #setLevel(int)
+     * @see #setExp(float)
+     * @see #calculateTotalExperiencePoints()
+     */
+    void setExperienceLevelAndProgress(@org.jetbrains.annotations.Range(from = 0, to = Integer.MAX_VALUE) int totalExperience);
+
+    /**
+     * Gets the total amount of experience points that are needed to reach the next level from zero progress towards it.
+     *
+     * <p>Can be used with {@link #getExp()} to calculate the current points for the current level and alike</p>
+     *
+     * @return The required experience points
+     * @see #getExp()
+     */
+    int getExperiencePointsNeededForNextLevel();
+    // Paper end
 
     /**
      * Send an experience change.