Merge branch '1.20.1' into 1.20.1-dev
This commit is contained in:
commit
8f2b6d84b1
39
.github/workflows/backport-prs.yml
vendored
Normal file
39
.github/workflows/backport-prs.yml
vendored
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
name: Backport merged pull request
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [closed]
|
||||
issue_comment:
|
||||
types: [created]
|
||||
permissions:
|
||||
contents: write # so it can comment
|
||||
pull-requests: write # so it can create pull requests
|
||||
jobs:
|
||||
backport:
|
||||
name: Backport pull request
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Only run when pull request is merged
|
||||
# or when a comment starting with `/backport` is created by someone other than the
|
||||
# https://github.com/backport-action bot user (user id: 97796249). Note that if you use your
|
||||
# own PAT as `github_token`, that you should replace this id with yours.
|
||||
if: >
|
||||
(
|
||||
github.event_name == 'pull_request_target' &&
|
||||
github.event.pull_request.merged
|
||||
) || (
|
||||
github.event_name == 'issue_comment' &&
|
||||
github.event.issue.pull_request &&
|
||||
github.event.comment.user.id != 97796249 &&
|
||||
startsWith(github.event.comment.body, '/backport')
|
||||
)
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Create backport pull requests
|
||||
uses: korthout/backport-action@v3
|
||||
with:
|
||||
github_token: ${{ secrets.TOKEN }}
|
||||
pull_description: |
|
||||
Backport of #${pull_number} to `${target_branch}`.
|
||||
|
||||
### Description
|
||||
${pull_description}
|
||||
|
|
@ -184,10 +184,8 @@ public class VanillaSync {
|
|||
// Restore basic attributes
|
||||
serverPlayer.setHealth(rs2.getInt("health"));
|
||||
serverPlayer.getFoodData().setFoodLevel(rs2.getInt("food_level"));
|
||||
serverPlayer.totalExperience = 0;
|
||||
serverPlayer.experienceLevel = 0;
|
||||
serverPlayer.experienceProgress = 0;
|
||||
serverPlayer.giveExperiencePoints(rs2.getInt("xp"));
|
||||
|
||||
setXpForPlayer(serverPlayer, rs2.getInt("xp"));
|
||||
serverPlayer.setScore(rs2.getInt("score"));
|
||||
|
||||
// Restore left-hand item
|
||||
|
|
@ -462,7 +460,7 @@ public class VanillaSync {
|
|||
PlayerSync.LOGGER.info("Storing data for player " + player_uuid + " (init=" + init + ")");
|
||||
|
||||
// Basic Attributes
|
||||
int XP = player.totalExperience;
|
||||
int XP = getTotalExperience(player);
|
||||
int score = player.getScore();
|
||||
int food_level = player.getFoodData().getFoodLevel();
|
||||
int health = (int) player.getHealth();
|
||||
|
|
@ -625,4 +623,52 @@ public class VanillaSync {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void setXpForPlayer(ServerPlayer serverPlayer, int databaseXp) {
|
||||
// Don't use giveExperience() as it has several side-effects:
|
||||
// triggers an event, sends network packets, increases the score, ...
|
||||
serverPlayer.totalExperience = databaseXp;
|
||||
serverPlayer.experienceLevel = 0;
|
||||
serverPlayer.experienceProgress = 0;
|
||||
|
||||
int xpForLevel;
|
||||
|
||||
while (databaseXp >= (xpForLevel = serverPlayer.getXpNeededForNextLevel())) {
|
||||
databaseXp -= xpForLevel;
|
||||
serverPlayer.experienceLevel++;
|
||||
}
|
||||
|
||||
serverPlayer.experienceProgress = serverPlayer.experienceLevel > 0
|
||||
? (float) databaseXp / serverPlayer.getXpNeededForNextLevel()
|
||||
: 0f;
|
||||
|
||||
PlayerSync.LOGGER.debug("Giving player "
|
||||
+ serverPlayer.experienceLevel + " levels and "
|
||||
+ serverPlayer.experienceProgress * 100 + "% experience progress, calculated from "
|
||||
+ serverPlayer.totalExperience + " XP.");
|
||||
}
|
||||
|
||||
private static int getTotalExperience(final Player player) {
|
||||
int level = player.experienceLevel;
|
||||
int totalXp = 0;
|
||||
|
||||
// Calculate total XP for completed levels
|
||||
if (level > 30) {
|
||||
totalXp = (int) (4.5 * Math.pow(level, 2) - 162.5 * level + 2220);
|
||||
} else if (level > 15) {
|
||||
totalXp = (int) (2.5 * Math.pow(level, 2) - 40.5 * level + 360);
|
||||
} else {
|
||||
totalXp = level * level + 6 * level;
|
||||
}
|
||||
|
||||
// Add partial level progress
|
||||
totalXp += Math.round(player.getXpNeededForNextLevel() * player.experienceProgress);
|
||||
|
||||
PlayerSync.LOGGER.debug("Experience calcuation for "
|
||||
+ player.experienceLevel + " levels and "
|
||||
+ player.experienceProgress * 100 + "% experience progress yields "
|
||||
+ totalXp + " XP.");
|
||||
|
||||
return totalXp;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user