Skip to content

Commit c460b86

Browse files
committed
Update to support new gamerule naming in 1.21.11
1 parent 1341aa0 commit c460b86

File tree

1 file changed

+17
-6
lines changed
  • src/main/java/org/mvplugins/multiverse/inventories/share

1 file changed

+17
-6
lines changed

src/main/java/org/mvplugins/multiverse/inventories/share/Sharables.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -753,10 +753,12 @@ public boolean updatePlayer(Player player, ProfileData profile) {
753753
int totalExperience = player.getTotalExperience();
754754
int level = player.getLevel();
755755
float exp = player.getExp();
756-
boolean announceAdvancements = Boolean.TRUE.equals(player.getWorld().getGameRuleValue(GameRule.ANNOUNCE_ADVANCEMENTS));
757-
if (announceAdvancements) {
758-
player.getWorld().setGameRule(GameRule.ANNOUNCE_ADVANCEMENTS, false);
759-
}
756+
757+
boolean announceAdvancements = announceAdvancementsRule
758+
.map(rule -> Boolean.TRUE.equals(player.getWorld().getGameRuleValue(rule)))
759+
.filter(Boolean::booleanValue)
760+
.map(ignore -> player.getWorld().setGameRule(announceAdvancementsRule.get(), false))
761+
.getOrElse(false);
760762

761763
Bukkit.advancementIterator().forEachRemaining(advancement -> {
762764
AdvancementProgress advancementProgress = player.getAdvancementProgress(advancement);
@@ -777,14 +779,16 @@ public boolean updatePlayer(Player player, ProfileData profile) {
777779
player.setLevel(level);
778780
player.setTotalExperience(totalExperience);
779781
sendAdvancementUpdateWithoutToast.accept(player);
780-
if (announceAdvancements) {
781-
player.getWorld().setGameRule(GameRule.ANNOUNCE_ADVANCEMENTS, true);
782+
if (announceAdvancements && announceAdvancementsRule.isDefined()) {
783+
announceAdvancementsRule
784+
.peek(rule -> player.getWorld().setGameRule(rule, true));
782785
}
783786

784787
return advancements != null;
785788
}
786789
}).defaultSerializer(new ProfileEntry(false, "advancements")).altName("achievements").optional().build();
787790

791+
private static final Option<GameRule<Boolean>> announceAdvancementsRule;
788792
private static final Consumer<Player> sendAdvancementUpdateWithoutToast;
789793

790794
static {
@@ -804,6 +808,13 @@ public boolean updatePlayer(Player player, ProfileData profile) {
804808
Try.of(() -> method.invoke(serverPlayer)).toOption())
805809
.flatMap(playerAdvancements -> flushDirtyMethod.flatMap(method ->
806810
Try.of(() -> method.invoke(playerAdvancements, serverPlayer, false)).toOption())));
811+
812+
//todo use 1.21.11+ Registry lookup for gamerule instead of getByName
813+
@SuppressWarnings("unchecked")
814+
Option<GameRule<Boolean>> rule = Try.of(() -> Option.of((GameRule<Boolean>) GameRule.getByName("announceAdvancements"))
815+
.getOrElse(() -> (GameRule<Boolean>) GameRule.getByName("minecraft:show_advancement_messages")))
816+
.toOption();
817+
announceAdvancementsRule = rule;
807818
}
808819

809820
/**

0 commit comments

Comments
 (0)