New Report syntax
This commit is contained in:
parent
309c1ac3f2
commit
ad074616a9
14
build.gradle
14
build.gradle
@ -20,7 +20,7 @@ repositories {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly "io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT"
|
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
|
def targetJavaVersion = 17
|
||||||
@ -39,11 +39,9 @@ tasks.withType(JavaCompile).configureEach {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
tasks.register('copyJarToServer', Exec) {
|
||||||
def props = [version: version]
|
dependsOn jar
|
||||||
inputs.properties props
|
mustRunAfter jar
|
||||||
filteringCharset 'UTF-8'
|
|
||||||
filesMatching('paper-plugin.yml') {
|
commandLine 'scp', 'build/libs/spawn-1.0.jar', 'root@10.20.6.1:/root/server/plugins'
|
||||||
expand props
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
@ -19,89 +20,109 @@ import java.net.http.HttpClient;
|
|||||||
import java.net.http.HttpRequest;
|
import java.net.http.HttpRequest;
|
||||||
import java.net.http.HttpResponse;
|
import java.net.http.HttpResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class Report extends Appliance {
|
public class Report extends Appliance {
|
||||||
private record Request(UUID reporter, UUID reported, String reason) {}
|
private final URI apiEndpoint;
|
||||||
private record Response(String url) {}
|
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 {
|
try {
|
||||||
OfflinePlayer target = Bukkit.getOfflinePlayer(targetUsername);
|
HttpClient client = HttpClient.newHttpClient();
|
||||||
Request request = new Request(issuer.getUniqueId(), target.getUniqueId(), reason);
|
HttpRequest httpRequest = HttpRequest.newBuilder()
|
||||||
|
.uri(this.apiEndpoint)
|
||||||
HttpResponse<String> responseString = postRequest(URI.create("https://mhsl.eu/craftattack/report"), new Gson().toJson(request));
|
.header("Content-Type", "application/json")
|
||||||
|
.POST(HttpRequest.BodyPublishers.ofString(new Gson().toJson(reportRequest)))
|
||||||
switch (responseString.statusCode()) {
|
.build();
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
|
||||||
|
printResultMessage(issuer, httpResponse);
|
||||||
} catch (IOException | InterruptedException e) {
|
} catch (IOException | InterruptedException e) {
|
||||||
|
issuer.sendMessage(
|
||||||
|
Component.text("Internal server error: " + e.getMessage()).color(NamedTextColor.RED)
|
||||||
|
);
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private HttpResponse<String> postRequest(URI uri, String body) throws IOException, InterruptedException {
|
private void printResultMessage(Player issuer, HttpResponse<String> httpResponse) {
|
||||||
HttpClient client = HttpClient.newHttpClient();
|
switch (httpResponse.statusCode()) {
|
||||||
HttpRequest httpRequest = HttpRequest.newBuilder()
|
case 201:
|
||||||
.uri(uri)
|
Response response = new Gson().fromJson(httpResponse.body(), Response.class);
|
||||||
.header("Content-Type", "application/json")
|
issuer.sendMessage(
|
||||||
.POST(HttpRequest.BodyPublishers.ofString(body))
|
Component.text()
|
||||||
.build();
|
.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
|
@Override
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.mhsl.craftattack.spawn.appliances.report.command;
|
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.appliance.ApplianceCommand;
|
||||||
import eu.mhsl.craftattack.spawn.appliances.report.Report;
|
import eu.mhsl.craftattack.spawn.appliances.report.Report;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@ -26,16 +25,6 @@ public class ReportCommand extends ApplianceCommand.PlayerChecked<Report> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
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(
|
sender.sendMessage(
|
||||||
Component.newline()
|
Component.newline()
|
||||||
.append(Component.text("Reportanfrage wird erstellt...", NamedTextColor.GREEN))
|
.append(Component.text("Reportanfrage wird erstellt...", NamedTextColor.GREEN))
|
||||||
@ -44,13 +33,17 @@ public class ReportCommand extends ApplianceCommand.PlayerChecked<Report> {
|
|||||||
.appendNewline()
|
.appendNewline()
|
||||||
);
|
);
|
||||||
|
|
||||||
Bukkit.getScheduler().runTask(Main.instance(), () -> {
|
if(args.length == 0) {
|
||||||
getAppliance().issueReport(
|
getAppliance().reportToUnknown(getPlayer());
|
||||||
getPlayer(),
|
}
|
||||||
args[0],
|
|
||||||
Arrays.stream(args).skip(1).collect(Collectors.joining(" "))
|
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
|
@Override
|
||||||
|
@ -20,3 +20,6 @@ countdown:
|
|||||||
countdown: 60
|
countdown: 60
|
||||||
worldborder-before: 37
|
worldborder-before: 37
|
||||||
worldborder-after: 0
|
worldborder-after: 0
|
||||||
|
|
||||||
|
report:
|
||||||
|
api: https://mhsl.eu/craftattack/report
|
||||||
|
Loading…
x
Reference in New Issue
Block a user