Fix scores for 1.12

This commit is contained in:
libraryaddict 2021-01-28 18:20:26 +13:00
parent 4c7ba6a9ad
commit 6c2cd6ac7a

View File

@ -184,11 +184,16 @@ public class ReflectionManager {
noDamageTicks = getNmsField("Entity", "noDamageTicks");
isInvul = getNmsMethod("Entity", "isInvulnerable", getNmsClass("DamageSource"));
genericDamage = getNmsField("DamageSource", "GENERIC").get(null);
boardField = getCraftClass("scoreboard.CraftScoreboard").getDeclaredField("board");
boardField = getCraftClass("scoreboard.CraftScoreboard").getDeclaredField("board");
boardField.setAccessible(true);
scoreboardCrtieriaHealth = getNmsField("IScoreboardCriteria", "HEALTH").get(null);
setScore = getNmsMethod("ScoreboardScore", "setScore", int.class);
getObjectives = getNmsMethod("Scoreboard", "getObjectivesForCriteria", getNmsClass("IScoreboardCriteria"), String.class, Consumer.class);
if (!NmsVersion.v1_13.isSupported()) {
getObjectives = getNmsMethod("Scoreboard", "getScoreboardScores", getNmsClass("IScoreboardCriteria"), String.class, ArrayList.class);
} else {
getObjectives = getNmsMethod("Scoreboard", "getObjectivesForCriteria", getNmsClass("IScoreboardCriteria"), String.class, Consumer.class);
}
Method method = getNmsMethod("SoundCategory", "a");
@ -1932,6 +1937,16 @@ public class ReflectionManager {
try {
Object board = boardField.get(scoreboard);
if (!NmsVersion.v1_13.isSupported()) {
Collection scores = (Collection) getObjectives.invoke(board, criteria, name, new ArrayList<>());
for (Object obj : scores) {
setScore.invoke(obj, score);
}
return;
}
Consumer con = o -> {
try {
setScore.invoke(o, score);