Code/net/minecraft/client/multiplayer/chat/report/Report.java

108 lines
3.7 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.client.multiplayer.chat.report;
import com.mojang.authlib.minecraft.report.AbuseReport;
import com.mojang.authlib.minecraft.report.AbuseReportLimits;
import com.mojang.datafixers.util.Either;
import java.time.Instant;
import java.util.UUID;
import javax.annotation.Nullable;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public abstract class Report {
protected final UUID reportId;
protected final Instant createdAt;
protected final UUID reportedProfileId;
protected String comments = "";
@Nullable
protected ReportReason reason;
protected boolean attested;
public Report(UUID p_297657_, Instant p_300470_, UUID p_297764_) {
this.reportId = p_297657_;
this.createdAt = p_300470_;
this.reportedProfileId = p_297764_;
}
public boolean isReportedPlayer(UUID p_297578_) {
return p_297578_.equals(this.reportedProfileId);
}
public abstract Report copy();
public abstract Screen createScreen(Screen p_299662_, ReportingContext p_299414_);
@OnlyIn(Dist.CLIENT)
public abstract static class Builder<R extends Report> {
protected final R report;
protected final AbuseReportLimits limits;
protected Builder(R p_299684_, AbuseReportLimits p_297887_) {
this.report = p_299684_;
this.limits = p_297887_;
}
public R report() {
return this.report;
}
public UUID reportedProfileId() {
return this.report.reportedProfileId;
}
public String comments() {
return this.report.comments;
}
public boolean attested() {
return this.report().attested;
}
public void setComments(String p_298827_) {
this.report.comments = p_298827_;
}
@Nullable
public ReportReason reason() {
return this.report.reason;
}
public void setReason(ReportReason p_298659_) {
this.report.reason = p_298659_;
}
public void setAttested(boolean p_344722_) {
this.report.attested = p_344722_;
}
public abstract boolean hasContent();
@Nullable
public Report.CannotBuildReason checkBuildable() {
return !this.report().attested ? Report.CannotBuildReason.NOT_ATTESTED : null;
}
public abstract Either<Report.Result, Report.CannotBuildReason> build(ReportingContext p_301358_);
}
@OnlyIn(Dist.CLIENT)
public record CannotBuildReason(Component message) {
public static final Report.CannotBuildReason NO_REASON = new Report.CannotBuildReason(Component.translatable("gui.abuseReport.send.no_reason"));
public static final Report.CannotBuildReason NO_REPORTED_MESSAGES = new Report.CannotBuildReason(Component.translatable("gui.chatReport.send.no_reported_messages"));
public static final Report.CannotBuildReason TOO_MANY_MESSAGES = new Report.CannotBuildReason(Component.translatable("gui.chatReport.send.too_many_messages"));
public static final Report.CannotBuildReason COMMENT_TOO_LONG = new Report.CannotBuildReason(Component.translatable("gui.abuseReport.send.comment_too_long"));
public static final Report.CannotBuildReason NOT_ATTESTED = new Report.CannotBuildReason(Component.translatable("gui.abuseReport.send.not_attested"));
public Tooltip tooltip() {
return Tooltip.create(this.message);
}
}
@OnlyIn(Dist.CLIENT)
public record Result(UUID id, ReportType reportType, AbuseReport report) {
}
}