// Decompiled with: CFR 0.152
// Class Version: 17
package mathax.client.systems.commands.commands;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.suggestion.Suggestion;
import com.mojang.brigadier.suggestion.Suggestions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import joptsimple.internal.Strings;
import mathax.client.MatHax;
import mathax.client.eventbus.EventHandler;
import mathax.client.events.packets.PacketEvent;
import mathax.client.events.world.TickEvent;
import mathax.client.systems.commands.Command;
import net.minecraft.class_124;
import net.minecraft.class_2172;
import net.minecraft.class_2639;
import net.minecraft.class_2805;
public class PluginsCommand
extends Command {
private static final List<String> ANTICHEAT_LIST = Arrays.asList("nocheatplus", "negativity", "warden", "horizon", "illegalstack", "coreprotect", "exploitsx", "vulcan", "abc", "spartan", "kauri", "anticheatreloaded", "witherac", "godseye", "matrix", "wraith");
private List<String> plugins = new ArrayList<String>();
private static final String completionStarts = "/:abcdefghijklmnopqrstuvwxyz0123456789-";
private int ticks = 0;
public PluginsCommand() {
super("plugins", "Prints server plugins.", new String[0]);
}
@Override
public void build(LiteralArgumentBuilder<class_2172> builder) {
builder.executes(context -> {
this.ticks = 0;
this.plugins.clear();
MatHax.EVENT_BUS.subscribe(this);
this.info("Please wait around 5 seconds...", new Object[0]);
new Thread(() -> {
Random random = new Random();
completionStarts.chars().forEach(i -> {
PluginsCommand.mc.field_1724.field_3944.method_2883(new class_2805(random.nextInt(200), Character.toString(i)));
try {
Thread.sleep(100L);
}
catch (InterruptedException e) {
e.printStackTrace();
}
});
}).start();
return 1;
});
}
@EventHandler
private void onTick(TickEvent.Post event) {
++this.ticks;
if (this.ticks >= 100) {
Collections.sort(this.plugins);
for (int i = 0; i < this.plugins.size(); ++i) {
this.plugins.set(i, this.formatName(this.plugins.get(i)));
}
if (!this.plugins.isEmpty()) {
this.info("Plugins (%d): %s ", this.plugins.size(), Strings.join(this.plugins.toArray(new String[0]), ", "));
} else {
this.error("No plugins found.", new Object[0]);
}
this.ticks = 0;
this.plugins.clear();
MatHax.EVENT_BUS.unsubscribe(this);
}
}
@EventHandler
private void onReadPacket(PacketEvent.Receive event) {
try {
if (event.packet instanceof class_2639) {
class_2639 packet = (class_2639)((Object)event.packet);
Suggestions matches = packet.method_11397();
if (matches == null) {
this.error("Invalid Packet.", new Object[0]);
return;
}
for (Suggestion suggestion : matches.getList()) {
String pluginName;
String[] command = suggestion.getText().split(":");
if (command.length <= 1 || this.plugins.contains(pluginName = command[0].replace("/", ""))) continue;
this.plugins.add(pluginName);
}
}
}
catch (Exception e) {
this.error("An error occurred while trying to find plugins!", new Object[0]);
}
}
private String formatName(String name) {
if (ANTICHEAT_LIST.contains(name)) {
return String.format("%s%s(default)", class_124.field_1061, name);
}
if (name.contains("exploit") || name.contains("cheat") || name.contains("illegal")) {
return String.format("%s%s(default)", class_124.field_1061, name);
}
return String.format("(highlight)%s(default)", name);
}
}