mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
manually set level and exp %
This commit is contained in:
parent
6078136a80
commit
a0fa1e3fe2
1 changed files with 33 additions and 8 deletions
|
|
@ -138,7 +138,10 @@ class AnvilResultListener : Listener {
|
||||||
CustomAnvil.log("gamemode: ${player.gameMode != GameMode.CREATIVE}, cost: $finalCost, level: ${player.level}, result: ${player.totalExperience < finalCost} ${player.level < finalCost}")
|
CustomAnvil.log("gamemode: ${player.gameMode != GameMode.CREATIVE}, cost: $finalCost, level: ${player.level}, result: ${player.totalExperience < finalCost} ${player.level < finalCost}")
|
||||||
if (player.gameMode != GameMode.CREATIVE) {
|
if (player.gameMode != GameMode.CREATIVE) {
|
||||||
if (recipe.removeExactLinearXp) {
|
if (recipe.removeExactLinearXp) {
|
||||||
if(player.totalExperience < finalCost) return
|
val levelXp = AnvilXpUtil.calculateXpForLevel(player.level)
|
||||||
|
val delta = AnvilXpUtil.calculateXpForLevel(player.level + 1) - levelXp
|
||||||
|
val totalXp = levelXp + player.exp * delta
|
||||||
|
if (totalXp < finalCost) return
|
||||||
} else if (player.level < finalCost) return
|
} else if (player.level < finalCost) return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -149,7 +152,17 @@ class AnvilResultListener : Listener {
|
||||||
|
|
||||||
// Handle not creative middle click...
|
// Handle not creative middle click...
|
||||||
if (event.click != ClickType.MIDDLE &&
|
if (event.click != ClickType.MIDDLE &&
|
||||||
!handleCustomCraftClick(event, recipe, inventory, player, leftItem, rightItem, amount, finalCost, recipe.removeExactLinearXp)
|
!handleCustomCraftClick(
|
||||||
|
event,
|
||||||
|
recipe,
|
||||||
|
inventory,
|
||||||
|
player,
|
||||||
|
leftItem,
|
||||||
|
rightItem,
|
||||||
|
amount,
|
||||||
|
finalCost,
|
||||||
|
recipe.removeExactLinearXp
|
||||||
|
)
|
||||||
) return
|
) return
|
||||||
|
|
||||||
// Finally, we add the item to the player
|
// Finally, we add the item to the player
|
||||||
|
|
@ -179,7 +192,19 @@ class AnvilResultListener : Listener {
|
||||||
|
|
||||||
if (player.gameMode != GameMode.CREATIVE) {
|
if (player.gameMode != GameMode.CREATIVE) {
|
||||||
if (linearCost) {
|
if (linearCost) {
|
||||||
player.totalExperience -= xpCost
|
val levelXp = AnvilXpUtil.calculateXpForLevel(player.level)
|
||||||
|
val delta = AnvilXpUtil.calculateXpForLevel(player.level + 1) - levelXp
|
||||||
|
var totalXp = levelXp + player.exp * delta
|
||||||
|
totalXp -= xpCost
|
||||||
|
|
||||||
|
val newLevel = AnvilXpUtil.calculateLevelForXp(totalXp.toInt())
|
||||||
|
|
||||||
|
val newLevelXp = AnvilXpUtil.calculateXpForLevel(newLevel)
|
||||||
|
val newDelta = AnvilXpUtil.calculateXpForLevel(newLevel + 1) - newLevelXp
|
||||||
|
val xp = (totalXp - newLevelXp) / newDelta
|
||||||
|
|
||||||
|
player.level = newLevel
|
||||||
|
player.exp = xp / newDelta
|
||||||
} else {
|
} else {
|
||||||
player.level -= xpCost
|
player.level -= xpCost
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue