New Report syntax
This commit is contained in:
parent
309c1ac3f2
commit
ad074616a9
14
build.gradle
14
build.gradle
@ -20,7 +20,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
compileOnly "io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT"
|
||||
implementation 'com.theokanning.openai-gpt3-java:service:0.14.0'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.11.0'
|
||||
}
|
||||
|
||||
def targetJavaVersion = 17
|
||||
@ -39,11 +39,9 @@ tasks.withType(JavaCompile).configureEach {
|
||||
}
|
||||
}
|
||||
|
||||
processResources {
|
||||
def props = [version: version]
|
||||
inputs.properties props
|
||||
filteringCharset 'UTF-8'
|
||||
filesMatching('paper-plugin.yml') {
|
||||
expand props
|
||||
}
|
||||
tasks.register('copyJarToServer', Exec) {
|
||||
dependsOn jar
|
||||
mustRunAfter jar
|
||||
|
||||
commandLine 'scp', 'build/libs/spawn-1.0.jar', 'root@10.20.6.1:/root/server/plugins'
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
@ -19,89 +20,109 @@ import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class Report extends Appliance {
|
||||
private record Request(UUID reporter, UUID reported, String reason) {}
|
||||
private record Response(String url) {}
|
||||
private final URI apiEndpoint;
|
||||
public Report() {
|
||||
super("report");
|
||||
this.apiEndpoint = URI.create(Objects.requireNonNull(localConfig().getString("api")));
|
||||
}
|
||||
|
||||
public void issueReport(Player issuer, String targetUsername, String reason) {
|
||||
private record Request(@NotNull UUID reporter, @Nullable UUID reported, String reason) {}
|
||||
private record Response(@NotNull String url) {}
|
||||
|
||||
public void reportToUnknown(@NotNull Player issuer) {
|
||||
Request request = new Request(issuer.getUniqueId(), null, "");
|
||||
issueReport(issuer, request);
|
||||
}
|
||||
|
||||
public void reportToKnown(@NotNull Player issuer, @NotNull String targetUsername, @Nullable String reason) {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(targetUsername);
|
||||
if(issuer.getUniqueId().equals(offlinePlayer.getUniqueId())) {
|
||||
issuer.sendMessage(
|
||||
Component.text("Du kannst dich nicht selbst reporten.").color(NamedTextColor.RED)
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
Request request = new Request(issuer.getUniqueId(), offlinePlayer.getUniqueId(), Optional.ofNullable(reason).orElse(""));
|
||||
issueReport(issuer, request);
|
||||
}
|
||||
|
||||
private void issueReport(Player issuer, Request reportRequest) {
|
||||
try {
|
||||
OfflinePlayer target = Bukkit.getOfflinePlayer(targetUsername);
|
||||
Request request = new Request(issuer.getUniqueId(), target.getUniqueId(), reason);
|
||||
|
||||
HttpResponse<String> responseString = postRequest(URI.create("https://mhsl.eu/craftattack/report"), new Gson().toJson(request));
|
||||
|
||||
switch (responseString.statusCode()) {
|
||||
case 201:
|
||||
Response response = new Gson().fromJson(responseString.body(), Response.class);
|
||||
issuer.sendMessage(
|
||||
Component.text()
|
||||
.append(Component.text("\\/".repeat(10), NamedTextColor.DARK_GRAY))
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(Component.text("!!! Report hier fertigstellen !!!", NamedTextColor.GOLD))
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(
|
||||
Component
|
||||
.text(" > Hier klicken < ", NamedTextColor.GREEN)
|
||||
.hoverEvent(HoverEvent.showText(Component.text(response.url).color(NamedTextColor.GREEN)))
|
||||
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, response.url))
|
||||
)
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(
|
||||
Component
|
||||
.text("(" + response.url + ")", NamedTextColor.GRAY)
|
||||
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, response.url))
|
||||
)
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(Component.text("/\\".repeat(10), NamedTextColor.DARK_GRAY))
|
||||
);
|
||||
break;
|
||||
|
||||
case 400:
|
||||
issuer.sendMessage(
|
||||
Component.text()
|
||||
.append(Component.text("Der Nutzer ", NamedTextColor.RED))
|
||||
.append(Component.text(targetUsername, NamedTextColor.DARK_RED))
|
||||
.append(Component.text(" ist in unserem System nicht bekannt.", NamedTextColor.RED))
|
||||
.appendNewline()
|
||||
.append(Component.text("Bist du sicher, dass du den Namen richtig geschrieben hast?", NamedTextColor.RED))
|
||||
.appendNewline()
|
||||
.append(Component.text("Du kannst dich alternativ jederzeit bei einem Admin melden.", NamedTextColor.GRAY))
|
||||
);
|
||||
break;
|
||||
|
||||
case 401:
|
||||
default:
|
||||
issuer.sendMessage(
|
||||
Component.text()
|
||||
.append(Component.text("Interner Serverfehler beim anlegen des Reports.", NamedTextColor.RED))
|
||||
.appendNewline()
|
||||
.append(Component.text("Bitte melde dich bei einem Admin!", NamedTextColor.RED))
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
HttpRequest httpRequest = HttpRequest.newBuilder()
|
||||
.uri(this.apiEndpoint)
|
||||
.header("Content-Type", "application/json")
|
||||
.POST(HttpRequest.BodyPublishers.ofString(new Gson().toJson(reportRequest)))
|
||||
.build();
|
||||
|
||||
HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
|
||||
printResultMessage(issuer, httpResponse);
|
||||
} catch (IOException | InterruptedException e) {
|
||||
issuer.sendMessage(
|
||||
Component.text("Internal server error: " + e.getMessage()).color(NamedTextColor.RED)
|
||||
);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private HttpResponse<String> postRequest(URI uri, String body) throws IOException, InterruptedException {
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
HttpRequest httpRequest = HttpRequest.newBuilder()
|
||||
.uri(uri)
|
||||
.header("Content-Type", "application/json")
|
||||
.POST(HttpRequest.BodyPublishers.ofString(body))
|
||||
.build();
|
||||
private void printResultMessage(Player issuer, HttpResponse<String> httpResponse) {
|
||||
switch (httpResponse.statusCode()) {
|
||||
case 201:
|
||||
Response response = new Gson().fromJson(httpResponse.body(), Response.class);
|
||||
issuer.sendMessage(
|
||||
Component.text()
|
||||
.append(Component.text("\\/".repeat(20), NamedTextColor.DARK_GRAY))
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(Component.text("!!! Report hier fertigstellen !!!", NamedTextColor.GOLD))
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(
|
||||
Component
|
||||
.text(" > Hier klicken < ", NamedTextColor.GREEN)
|
||||
.hoverEvent(HoverEvent.showText(Component.text(response.url).color(NamedTextColor.GREEN)))
|
||||
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, response.url))
|
||||
)
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(
|
||||
Component
|
||||
.text(response.url, NamedTextColor.GRAY)
|
||||
.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, response.url))
|
||||
)
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(Component.text("/\\".repeat(20), NamedTextColor.DARK_GRAY))
|
||||
);
|
||||
break;
|
||||
|
||||
return client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
|
||||
case 400:
|
||||
issuer.sendMessage(
|
||||
Component.text()
|
||||
.append(Component.text("Der angegebene Nutzer ist in unserem System nicht bekannt.", NamedTextColor.RED))
|
||||
.appendNewline()
|
||||
.append(Component.text("Bist du sicher, dass du den Namen richtig geschrieben hast?", NamedTextColor.RED))
|
||||
.appendNewline()
|
||||
.append(Component.text("Du kannst dich alternativ jederzeit bei einem Admin melden.", NamedTextColor.GRAY))
|
||||
);
|
||||
break;
|
||||
|
||||
case 401:
|
||||
default:
|
||||
issuer.sendMessage(
|
||||
Component.text()
|
||||
.append(Component.text("Interner Serverfehler beim anlegen des Reports.", NamedTextColor.RED))
|
||||
.appendNewline()
|
||||
.append(Component.text("Bitte melde dich bei einem Admin!", NamedTextColor.RED))
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,6 +1,5 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.report.command;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.Main;
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.report.Report;
|
||||
import net.kyori.adventure.text.Component;
|
||||
@ -26,16 +25,6 @@ public class ReportCommand extends ApplianceCommand.PlayerChecked<Report> {
|
||||
|
||||
@Override
|
||||
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
if(args.length == 0) {
|
||||
sender.sendMessage(
|
||||
Component
|
||||
.text("Bitte gib einen Spieler an, den du reporten möchtest!", NamedTextColor.RED)
|
||||
.appendNewline()
|
||||
.append(Component.text("/report <spieler> [grund]", NamedTextColor.RED))
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(
|
||||
Component.newline()
|
||||
.append(Component.text("Reportanfrage wird erstellt...", NamedTextColor.GREEN))
|
||||
@ -44,13 +33,17 @@ public class ReportCommand extends ApplianceCommand.PlayerChecked<Report> {
|
||||
.appendNewline()
|
||||
);
|
||||
|
||||
Bukkit.getScheduler().runTask(Main.instance(), () -> {
|
||||
getAppliance().issueReport(
|
||||
getPlayer(),
|
||||
args[0],
|
||||
Arrays.stream(args).skip(1).collect(Collectors.joining(" "))
|
||||
);
|
||||
});
|
||||
if(args.length == 0) {
|
||||
getAppliance().reportToUnknown(getPlayer());
|
||||
}
|
||||
|
||||
if(args.length == 1) {
|
||||
getAppliance().reportToKnown(getPlayer(), args[0], null);
|
||||
}
|
||||
|
||||
if(args.length > 1) {
|
||||
getAppliance().reportToKnown(getPlayer(), args[0], Arrays.stream(args).skip(1).collect(Collectors.joining(" ")));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -20,3 +20,6 @@ countdown:
|
||||
countdown: 60
|
||||
worldborder-before: 37
|
||||
worldborder-after: 0
|
||||
|
||||
report:
|
||||
api: https://mhsl.eu/craftattack/report
|
||||
|
Loading…
x
Reference in New Issue
Block a user