Cleanup advancement module and use advancement display

This commit is contained in:
IxPrumxI 2025-01-14 09:39:08 +03:00
parent 6dec0b7939
commit 88494c29e1
2 changed files with 10 additions and 7 deletions

View File

@ -35,6 +35,6 @@ public class PlayerAdvancementTrackerMixin {
@Inject(method = "grantCriterion", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancement/PlayerAdvancementTracker;onStatusUpdate(Lnet/minecraft/advancement/AdvancementEntry;)V"))
public void onGrant(AdvancementEntry advancementEntry, String criterionName, CallbackInfoReturnable<Boolean> cir) {
FabricAdvancementModule.onGrant(advancementEntry, criterionName, cir, owner);
FabricAdvancementModule.onGrant(advancementEntry, owner);
}
}

View File

@ -28,7 +28,6 @@ import net.minecraft.advancement.Advancement;
import net.minecraft.advancement.AdvancementEntry;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Formatting;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class FabricAdvancementModule extends AbstractFabricModule {
private final FabricDiscordSRV discordSRV;
@ -40,21 +39,25 @@ public class FabricAdvancementModule extends AbstractFabricModule {
instance = this;
}
public static void onGrant(AdvancementEntry advancementEntry, String criterionName, CallbackInfoReturnable<Boolean> cir, ServerPlayerEntity owner) {
public static void onGrant(AdvancementEntry advancementEntry, ServerPlayerEntity owner) {
if (instance == null || !instance.enabled) return;
FabricDiscordSRV discordSRV = instance.discordSRV;
Advancement advancement = advancementEntry.value();
if(advancement.name().isEmpty()) return; // Usually a crafting recipe.
String achievement = Formatting.strip(advancement.name().get().getString());
MinecraftComponent achievementName = ComponentUtil.fromPlain(achievement);
if(advancement.display().isEmpty() || advancement.name().isEmpty()) return; // Usually a crafting recipe.
String title = Formatting.strip(advancement.display().get().getTitle().getString());
MinecraftComponent advancementTitle = ComponentUtil.fromPlain(title);
// TODO: Add description to the event. So we can explain how the player got the advancement.
// String description = Formatting.strip(advancement.display().get().getDescription().getString());
// MinecraftComponent advancementDescription = ComponentUtil.fromPlain(description);
IPlayer player = discordSRV.playerProvider().player(owner);
discordSRV.eventBus().publish(
new AwardMessageReceiveEvent(
null,
player,
achievementName,
advancementTitle,
null,
null,
false