unused (for now)

This commit is contained in:
Chayapak 2024-10-26 09:23:49 +07:00
parent 42cb149e26
commit a948ef84e2
3 changed files with 56 additions and 17 deletions

View file

@ -4,12 +4,8 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import me.chayapak1.chomens_bot.Bot; import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.PlayerEntry; import me.chayapak1.chomens_bot.data.PlayerEntry;
import me.chayapak1.chomens_bot.util.ComponentUtilities;
import me.chayapak1.chomens_bot.util.PersistentDataUtilities; import me.chayapak1.chomens_bot.util.PersistentDataUtilities;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -40,21 +36,12 @@ public class IPFilterPlugin extends PlayersPlugin.Listener {
} }
private void check (PlayerEntry target) { private void check (PlayerEntry target) {
final CompletableFuture<Component> future = bot.core.runTracked("essentials:seen " + target.profile.getIdAsString()); final CompletableFuture<String> future = bot.players.getPlayerIP(target);
if (future == null) return; if (future == null) return;
future.thenApply(output -> { future.thenApply(output -> {
final List<Component> children = output.children(); handleIP(output, target);
String stringified = ComponentUtilities.stringify(Component.join(JoinConfiguration.separator(Component.space()), children));
if (!stringified.startsWith(" - IP Address: ")) return output;
stringified = stringified.trim().substring(" - IP Address: ".length());
if (stringified.startsWith("/")) stringified = stringified.substring(1);
handleIP(stringified, target);
return output; return output;
}); });

View file

@ -1,11 +1,14 @@
package me.chayapak1.chomens_bot.plugins; package me.chayapak1.chomens_bot.plugins;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import me.chayapak1.chomens_bot.Bot; import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.PlayerEntry; import me.chayapak1.chomens_bot.data.PlayerEntry;
import me.chayapak1.chomens_bot.util.PersistentDataUtilities; import me.chayapak1.chomens_bot.util.PersistentDataUtilities;
import java.time.Instant; import java.time.Instant;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class PlayersPersistentDataPlugin extends PlayersPlugin.Listener { public class PlayersPersistentDataPlugin extends PlayersPlugin.Listener {
public static JsonObject playersObject = new JsonObject(); public static JsonObject playersObject = new JsonObject();
@ -26,12 +29,33 @@ public class PlayersPersistentDataPlugin extends PlayersPlugin.Listener {
@Override @Override
public void playerJoined(PlayerEntry target) { public void playerJoined(PlayerEntry target) {
if (playersObject.has(getName(target))) return;
final JsonObject object = new JsonObject(); final JsonObject object = new JsonObject();
object.addProperty("uuid", target.profile.getIdAsString()); object.addProperty("uuid", target.profile.getIdAsString());
object.add("lastSeen", new JsonObject()); object.add("lastSeen", new JsonObject());
object.add("ips", new JsonObject());
final CompletableFuture<String> future = bot.players.getPlayerIP(target);
if (future == null) {
setPersistentEntry(target, object);
return;
}
future.completeOnTimeout(null, 5, TimeUnit.SECONDS);
future.thenApply(output -> {
if (output != null) {
object.getAsJsonObject("ips").addProperty(bot.host + ":" + bot.port, output);
}
setPersistentEntry(target, object);
return output;
});
}
// is this bad?
private void setPersistentEntry (PlayerEntry target, JsonObject object) {
playersObject.add(getName(target), object); playersObject.add(getName(target), object);
PersistentDataUtilities.put("players", playersObject); PersistentDataUtilities.put("players", playersObject);

View file

@ -1,5 +1,7 @@
package me.chayapak1.chomens_bot.plugins; package me.chayapak1.chomens_bot.plugins;
import me.chayapak1.chomens_bot.util.ComponentUtilities;
import net.kyori.adventure.text.JoinConfiguration;
import org.geysermc.mcprotocollib.network.Session; import org.geysermc.mcprotocollib.network.Session;
import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent; import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent;
import org.geysermc.mcprotocollib.network.packet.Packet; import org.geysermc.mcprotocollib.network.packet.Packet;
@ -16,6 +18,7 @@ import java.util.ArrayList;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.CompletableFuture;
public class PlayersPlugin extends Bot.Listener { public class PlayersPlugin extends Bot.Listener {
private final Bot bot; private final Bot bot;
@ -58,6 +61,31 @@ public class PlayersPlugin extends Bot.Listener {
} }
} }
public CompletableFuture<String> getPlayerIP (PlayerEntry target) {
final CompletableFuture<String> outputFuture = new CompletableFuture<>();
final CompletableFuture<Component> trackedCoreFuture = bot.core.runTracked("essentials:seen " + target.profile.getIdAsString());
if (trackedCoreFuture == null) return null;
trackedCoreFuture.thenApply(output -> {
final List<Component> children = output.children();
String stringified = ComponentUtilities.stringify(Component.join(JoinConfiguration.separator(Component.space()), children));
if (!stringified.startsWith(" - IP Address: ")) return output;
stringified = stringified.trim().substring(" - IP Address: ".length());
if (stringified.startsWith("/")) stringified = stringified.substring(1);
outputFuture.complete(stringified);
return output;
});
return outputFuture;
}
public final PlayerEntry getEntry (UUID uuid) { public final PlayerEntry getEntry (UUID uuid) {
for (PlayerEntry candidate : list) { for (PlayerEntry candidate : list) {
if (candidate.profile.getId().equals(uuid)) { if (candidate.profile.getId().equals(uuid)) {