mirror of
https://github.com/DiscordSRV/Ascension.git
synced 2025-02-21 02:31:37 +01:00
Don't forward advancements if the gamerule is disabled
This commit is contained in:
parent
5688e2ca62
commit
ce561416e8
@ -74,6 +74,12 @@ public class BukkitLegacyAdvancementListener extends AbstractBukkitListener<Play
|
||||
return;
|
||||
}
|
||||
|
||||
String gameRuleValue = event.getPlayer().getWorld().getGameRuleValue("announceAdvancements");
|
||||
if ("false".equals(gameRuleValue)) {
|
||||
logger().trace("Skipping forwarding advancement, disabled by gamerule");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
ReturnData data = nms.getData(event.getAdvancement());
|
||||
if (data == null) {
|
||||
@ -82,7 +88,7 @@ public class BukkitLegacyAdvancementListener extends AbstractBukkitListener<Play
|
||||
|
||||
MinecraftComponent title = MinecraftComponent.fromJson(data.titleJson);
|
||||
IPlayer srvPlayer = discordSRV.playerProvider().player(event.getPlayer());
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
discordSRV.eventBus().publish(
|
||||
new AwardMessageReceiveEvent(
|
||||
event,
|
||||
srvPlayer,
|
||||
@ -91,7 +97,7 @@ public class BukkitLegacyAdvancementListener extends AbstractBukkitListener<Play
|
||||
null,
|
||||
false
|
||||
)
|
||||
));
|
||||
);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
logger().debug("Failed to get advancement data", e);
|
||||
}
|
||||
|
@ -26,12 +26,15 @@ import com.discordsrv.bukkit.debug.EventObserver;
|
||||
import com.discordsrv.common.abstraction.player.IPlayer;
|
||||
import com.discordsrv.common.core.logging.NamedLogger;
|
||||
import io.papermc.paper.advancement.AdvancementDisplay;
|
||||
import org.bukkit.GameRule;
|
||||
import org.bukkit.advancement.Advancement;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@ApiStatus.AvailableSince("Paper 1.17.1")
|
||||
public class PaperAdvancementListener extends AbstractBukkitListener<PlayerAdvancementDoneEvent> {
|
||||
|
||||
@ -51,6 +54,12 @@ public class PaperAdvancementListener extends AbstractBukkitListener<PlayerAdvan
|
||||
|
||||
@Override
|
||||
protected void handleEvent(PlayerAdvancementDoneEvent event, Void __) {
|
||||
Boolean gameRuleValue = event.getPlayer().getWorld().getGameRuleValue(GameRule.ANNOUNCE_ADVANCEMENTS);
|
||||
if (Objects.equals(gameRuleValue, false)) {
|
||||
logger().trace("Skipping displaying advancement, disabled by gamerule");
|
||||
return;
|
||||
}
|
||||
|
||||
Advancement advancement = event.getAdvancement();
|
||||
AdvancementDisplay display = advancement.getDisplay();
|
||||
if (display == null || !display.doesAnnounceToChat()) {
|
||||
@ -63,7 +72,7 @@ public class PaperAdvancementListener extends AbstractBukkitListener<PlayerAdvan
|
||||
MinecraftComponent displayName = ADVANCEMENT_DISPLAY_NAME_HANDLE.getAPI(advancement);
|
||||
|
||||
IPlayer player = discordSRV.playerProvider().player(event.getPlayer());
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
discordSRV.eventBus().publish(
|
||||
new AwardMessageReceiveEvent(
|
||||
event,
|
||||
player,
|
||||
@ -72,7 +81,7 @@ public class PaperAdvancementListener extends AbstractBukkitListener<PlayerAdvan
|
||||
null,
|
||||
message == null
|
||||
)
|
||||
));
|
||||
);
|
||||
}
|
||||
|
||||
private EventObserver<PlayerAdvancementDoneEvent, Boolean> observer;
|
||||
|
@ -25,6 +25,7 @@ import com.discordsrv.common.abstraction.player.IPlayer;
|
||||
import com.discordsrv.common.core.logging.NamedLogger;
|
||||
import com.discordsrv.common.util.ComponentUtil;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitComponentSerializer;
|
||||
import org.bukkit.GameRule;
|
||||
import org.bukkit.advancement.Advancement;
|
||||
import org.bukkit.advancement.AdvancementDisplay;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -32,6 +33,8 @@ import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerAdvancementDoneEvent;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@ApiStatus.AvailableSince("Spigot 1.19")
|
||||
public class SpigotAdvancementListener extends AbstractBukkitListener<PlayerAdvancementDoneEvent> {
|
||||
|
||||
@ -46,6 +49,12 @@ public class SpigotAdvancementListener extends AbstractBukkitListener<PlayerAdva
|
||||
|
||||
@Override
|
||||
protected void handleEvent(PlayerAdvancementDoneEvent event, Void __) {
|
||||
Boolean gameRuleValue = event.getPlayer().getWorld().getGameRuleValue(GameRule.ANNOUNCE_ADVANCEMENTS);
|
||||
if (Objects.equals(gameRuleValue, false)) {
|
||||
logger().trace("Skipping forwarding advancement, disabled by gamerule");
|
||||
return;
|
||||
}
|
||||
|
||||
Advancement advancement = event.getAdvancement();
|
||||
AdvancementDisplay display = advancement.getDisplay();
|
||||
if (display == null || !display.shouldAnnounceChat()) {
|
||||
@ -56,7 +65,7 @@ public class SpigotAdvancementListener extends AbstractBukkitListener<PlayerAdva
|
||||
|
||||
MinecraftComponent title = ComponentUtil.toAPI(BukkitComponentSerializer.legacy().deserialize(display.getTitle())) ;
|
||||
IPlayer srvPlayer = discordSRV.playerProvider().player(event.getPlayer());
|
||||
discordSRV.scheduler().run(() -> discordSRV.eventBus().publish(
|
||||
discordSRV.eventBus().publish(
|
||||
new AwardMessageReceiveEvent(
|
||||
event,
|
||||
srvPlayer,
|
||||
@ -65,7 +74,7 @@ public class SpigotAdvancementListener extends AbstractBukkitListener<PlayerAdva
|
||||
null,
|
||||
false
|
||||
)
|
||||
));
|
||||
);
|
||||
}
|
||||
|
||||
// Event is not cancellable
|
||||
|
Loading…
Reference in New Issue
Block a user