
Помогите собрать плагин на фейковый онлайн и ботов на сервере. Пришлите готовый .jar и скажите что вы сделали и как у вас это получилось? Я новичок, ничего не понимаю в этом.
Внизу файлы моего проекта:
pom.xml
Внизу файлы моего проекта:
pom.xml
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>FakeOnlinePlayer</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.21.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
BotManager.java:
package com.example;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.io.File;
import java.util.List;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.CraftServer;
public class BotManager {
public static void spawnBots() {
ConfigManager config = new ConfigManager();
List<String> commands = config.getBotCommands();
java.io.File botsFile = config.getBotsFile();
try (BufferedReader br = new BufferedReader(new FileReader(botsFile))) {
String line;
while ((line = br.readLine()) != null) {
String nickname = line.trim();
FakePlayerInjector.injectFakePlayer(nickname);
for (String cmd : commands) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd.replace("{player}", nickname));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ConfigManager.java:
package com.example;
import java.io.File;
import java.util.List;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.FileConfiguration;
public class ConfigManager {
private final FileConfiguration config = FakeOnlinePlayer.getInstance().getConfig();
public boolean isFakeOnlineEnabled() {
return config.getBoolean("fake-online.enabled");
}
public int getFakeOnlineCount() {
return config.getInt("fake-online.count");
}
public boolean isBotsEnabled() {
return config.getBoolean("bots.enabled");
}
public java.util.List<String> getBotCommands() {
return config.getStringList("bots.commands");
}
public java.io.File getBotsFile() {
return new java.io.File(FakeOnlinePlayer.getInstance().getDataFolder(), "bots.txt");
}
FakeOnlinePlayer.java:
package com.example;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
public class FakeOnlinePlayer extends JavaPlugin {
private static FakeOnlinePlayer instance;
@Override
public void onEnable() {
instance = this;
getLogger().info("FakeOnlinePlayer загружен!");
ConfigManager configManager = new ConfigManager();
if (configManager.isBotsEnabled()) {
BotManager.spawnBots();
}
}
public static FakeOnlinePlayer getInstance() {
return instance;
}
}
FakePlayerEnjector.java:
package com.example.utils;
import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket;
import net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.UUID;
public class FakePlayerInjector {
public static void injectFakePlayer(String nickname) {
UUID uuid = UUID.randomUUID();
for (Player p : Bukkit.getOnlinePlayers()) {
CraftPlayer craftPlayer = (CraftPlayer) p;
ClientboundPlayerInfoUpdatePacket addPacket = new ClientboundPlayerInfoUpdatePacket(
ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER,
new ClientboundPlayerInfoUpdatePacket.PlayerUpdate(
uuid,
nickname,
false,
100,
(byte) 0,
craftPlayer.getProfile().getProperties(),
null
)
);
craftPlayer.getHandle().connection.send(addPacket);
}
}
}
bots.txt:
Bot1
Bot2
Bot3
CoolBot
TestBot
config.yml:
# FakeOnlinePlayer config
fake-online:
enabled: true
count: 50
bots:
enabled: true
commands:
- "glist add {player}"
- "say [BOT] {player} зашёл на сервер"
messages.yml:
prefix: "&8[&eFakeOnline&8]"
fake-online-set: "&aФейковый онлайн установлен на &f{count}"
bot-connected: "&aБот &f{player} &aподключён"