Skip to content

Commit

Permalink
fix: šŸ› Fix hero medallion to not allow "reclaiming" xp spent in anvilā€¦
Browse files Browse the repository at this point in the history
ā€¦ / in enchanting table
  • Loading branch information
P3pp3rF1y committed Apr 1, 2024
1 parent 19a1664 commit 11fad74
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
org.gradle.jvmargs=-Xmx2048m
minecraft_version=1.20.1
forge_version=47.1.5
mod_version=2.0.37
mod_version=2.0.38
jei_mc_version=1.20.1-forge
jei_version=15.1.0.19
curios_version=5.2.0-beta.3+1.20.1
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/reliquary/items/HeroMedallionItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,12 +104,18 @@ private void drainExperienceLevel(ItemStack stack, Player player) {
}

private void decreasePlayerExperience(Player player, int pointsToRemove) {
player.totalExperience = XpHelper.getTotalPlayerExperience(player) - pointsToRemove;
correctTotalExperience(player);
player.totalExperience -= pointsToRemove;
int newLevel = XpHelper.getLevelForExperience(player.totalExperience);
player.experienceLevel = newLevel;
player.experienceProgress = (float) (player.totalExperience - XpHelper.getExperienceForLevel(newLevel)) / player.getXpNeededForNextLevel();
}

private static void correctTotalExperience(Player player) {
//even vanilla doesn't seem to update this value properly when removing levels for enchanting / in anvil so fixing before working with it
player.totalExperience = XpHelper.getExperienceForLevel(player.experienceLevel) + (int) (XpHelper.getExperienceLimitOnLevel(player.experienceLevel) * player.experienceProgress);
}

private void decreaseMedallionExperience(ItemStack stack, int experience) {
setExperience(stack, getExperience(stack) - experience);
}
Expand Down

0 comments on commit 11fad74

Please sign in to comment.