Update to v0.2 #2

Merge aplicado
Awakened-Redstone mesclou 5 commits from development into master 2025-07-24 04:34:53 +00:00
12 arquivos alterados com 173 adições e 35 exclusões
Mostrando apenas as alterações do commit 872b361d00 - Mostrar todos os commits

Merge branch 'development' into temp

Awakened-Redstone 2021-03-06 17:51:33 -03:00 commit de GitHub
Nenhuma chave conhecida encontrada para esta assinatura no banco de dados
ID da chave GPG: 4AEE18F83AFDEB23

Ver arquivo

@ -37,6 +37,8 @@ dependencies {
include 'com.fasterxml.jackson.core:jackson-core:2.10.1'
}
}
compileJava {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

Ver arquivo

@ -1,9 +1,12 @@
package com.awakenedredstone.autowhitelist;
import com.awakenedredstone.autowhitelist.config.Config;
import com.awakenedredstone.autowhitelist.config.JsonHelper;
import com.awakenedredstone.autowhitelist.config.ConfigData;
import com.awakenedredstone.autowhitelist.json.JsonHelper;
import com.awakenedredstone.autowhitelist.database.SQLite;
import com.awakenedredstone.autowhitelist.util.MemberPlayer;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.mojang.authlib.GameProfile;
@ -22,11 +25,17 @@ import java.util.stream.Collectors;
public class AutoWhitelist implements ModInitializer {
public static final Config config = new Config();
private static final File configFile = new File(config.getConfigDirectory(), "AutoWhitelist.json");
public static MinecraftServer server;
public static final Config config = new Config();
public static final Logger logger = LogManager.getLogger("AutoWhitelist");
public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
private static final File configFile = new File(config.getConfigDirectory(), "AutoWhitelist.json");
public static ConfigData getConfigData() {
return config.getConfigData();
}
public static void updateWhitelist() {
logger.info("Updating whitelist.");

Ver arquivo

@ -1,22 +1,17 @@
package com.awakenedredstone.autowhitelist.commands;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import com.awakenedredstone.autowhitelist.bot.Bot;
import com.awakenedredstone.autowhitelist.discord.Bot;
import com.awakenedredstone.autowhitelist.database.SQLite;
import com.awakenedredstone.autowhitelist.util.MemberPlayer;
import com.mojang.authlib.GameProfile;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import net.minecraft.command.CommandSource;
import net.minecraft.command.argument.EntityArgumentType;
import net.minecraft.command.argument.GameProfileArgumentType;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralText;
import java.util.Collection;
import java.util.List;
public class AutoWhitelistCommand {

Ver arquivo

@ -1,16 +1,19 @@
package com.awakenedredstone.autowhitelist.config;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import com.awakenedredstone.autowhitelist.json.JsonHelper;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import java.io.File;
import java.io.*;
import java.util.stream.Collectors;
public class Config {
private JsonObject config;
private ConfigData configData;
private final File configFile = new File(getConfigDirectory(), "AutoWhitelist.json");
public File getConfigDirectory() {
@ -19,21 +22,23 @@ public class Config {
public void loadConfigs() {
if (configFile.exists() && configFile.isFile() && configFile.canRead()) {
JsonElement element = JsonHelper.parseJsonFile(configFile);
if (element != null && element.isJsonObject()) {
config = element.getAsJsonObject();
try (BufferedReader reader = new BufferedReader(new FileReader(configFile))) {
String json = reader.lines().collect(Collectors.joining("\n"));
StringReader stringReader = new StringReader(json);
configData = AutoWhitelist.GSON.fromJson(stringReader, ConfigData.class);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public JsonObject generateDefaultConfig() {
JsonObject json = new JsonObject();
json.add("whitelist-auto-update-delay-seconds", new JsonPrimitive(60L));
json.add("whitelistAutoUpdateDelaySeconds", new JsonPrimitive(60L));
json.add("prefix", new JsonPrimitive("np!"));
json.add("token", new JsonPrimitive("bot-token"));
json.add("application-id", new JsonPrimitive("application-id"));
json.add("discord-server-id", new JsonPrimitive("discord-server-id"));
json.add("clientId", new JsonPrimitive("client-id"));
json.add("discordServerId", new JsonPrimitive("discord-server-id"));
JsonObject whitelistJson = JsonHelper.getNestedObject(json, "whitelist", true);
if (whitelistJson == null) {
AutoWhitelist.logger.error("Something went wrong when generating the default config file!");
@ -59,4 +64,8 @@ public class Config {
public JsonObject getConfigs() {
return config;
}
public ConfigData getConfigData() {
return configData;
}
}

Ver arquivo

@ -0,0 +1,14 @@
package com.awakenedredstone.autowhitelist.config;
import java.util.List;
import java.util.Map;
public class ConfigData {
public long whitelistAutoUpdateDelaySeconds;
public String prefix;
public String token;
public String applicationId;
public String discordServerId;
public Map<String, List<String>> whitelist;
}

Ver arquivo

@ -0,0 +1,4 @@
package com.awakenedredstone.autowhitelist.database;
public class JsonDatabase {
}

Ver arquivo

@ -1,4 +1,4 @@
package com.awakenedredstone.autowhitelist.bot;
package com.awakenedredstone.autowhitelist.discord;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import com.awakenedredstone.autowhitelist.database.SQLite;
@ -44,14 +44,14 @@ public class Bot extends ListenerAdapter {
private static Bot instance;
private static ScheduledFuture<?> scheduledUpdate;
static ScheduledFuture<?> scheduledUpdate;
private static JDA jda = null;
static JDA jda = null;
private static String token = AutoWhitelist.config.getConfigs().get("token").getAsString();
private static String appId = AutoWhitelist.config.getConfigs().get("application-id").getAsString();
private static String serverId = AutoWhitelist.config.getConfigs().get("discord-server-id").getAsString();
private static String prefix = AutoWhitelist.config.getConfigs().get("prefix").getAsString();
private static long updateDelay = AutoWhitelist.config.getConfigs().get("whitelist-auto-update-delay-seconds").getAsLong();
static String serverId = AutoWhitelist.config.getConfigs().get("discord-server-id").getAsString();
static String prefix = AutoWhitelist.config.getConfigs().get("prefix").getAsString();
static long updateDelay = AutoWhitelist.config.getConfigs().get("whitelist-auto-update-delay-seconds").getAsLong();
public Bot() {
init();
@ -94,30 +94,30 @@ public class Bot extends ListenerAdapter {
serverId = AutoWhitelist.config.getConfigs().get("discord-server-id").getAsString();
prefix = AutoWhitelist.config.getConfigs().get("prefix").getAsString();
updateDelay = AutoWhitelist.config.getConfigs().get("whitelist-auto-update-delay-seconds").getAsLong();
source.sendFeedback(new LiteralText("Restarting the bot."), true);
source.sendFeedback(new LiteralText("Restarting the discord."), true);
scheduledUpdate.cancel(true);
jda.shutdown();
init();
source.sendFeedback(new LiteralText("Discord bot starting."), true);
source.sendFeedback(new LiteralText("Discord discord starting."), true);
}
private void init() {
try {
jda = JDABuilder.createDefault(token).enableIntents(GatewayIntent.GUILD_MEMBERS).setMemberCachePolicy(MemberCachePolicy.ALL).build();
jda.addEventListener(this);
jda.addEventListener(new BotEventListener());
jda.getPresence().setActivity(Activity.playing("on the Member Server"));
instance = this;
} catch (LoginException e) {
AutoWhitelist.logger.error("Failed to start bot, please verify the token.");
AutoWhitelist.logger.error("Failed to start discord, please verify the token.");
}
}
@Override
/*@Override
public void onReady(@NotNull ReadyEvent e) {
AutoWhitelist.logger.info("Bot started. Parsing registered users.");
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(4);
scheduledUpdate = scheduler.scheduleWithFixedDelay(this::updateWhitelist, 0, updateDelay, TimeUnit.SECONDS);
}
}*/
@Override
public void onGuildMemberRemove(@NotNull GuildMemberRemoveEvent e) {

Ver arquivo

@ -0,0 +1,23 @@
package com.awakenedredstone.autowhitelist.discord;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import net.dv8tion.jda.api.events.ReadyEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import static com.awakenedredstone.autowhitelist.discord.Bot.*;
public class BotEventListener extends ListenerAdapter {
//
@Override
public void onReady(@NotNull ReadyEvent e) {
AutoWhitelist.logger.info("Bot started. Parsing registered users.");
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(4);
scheduledUpdate = scheduler.scheduleWithFixedDelay(this::updateWhitelist, 0, updateDelay, TimeUnit.SECONDS);
}
}

Ver arquivo

@ -0,0 +1,75 @@
package com.awakenedredstone.autowhitelist.discord;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import com.awakenedredstone.autowhitelist.config.ConfigData;
import com.awakenedredstone.autowhitelist.database.SQLite;
import com.awakenedredstone.autowhitelist.util.MemberPlayer;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.awakenedredstone.autowhitelist.discord.Bot.*;
public class DiscordDataProcessor {
private void updateWhitelist() {
List<String> ids = new SQLite().getIds();
List<MemberPlayer> memberList = new SQLite().getMembers();
Guild guild = jda.getGuildById(serverId);
if (guild == null) {
AutoWhitelist.logger.error("Failed to get discord server, got null");
return;
}
guild.loadMembers().onSuccess(members -> {
List<Member> users = members.stream().filter(member -> ids.contains(member.getId())).collect(Collectors.toList());
for (Member user : users) {
List<MemberPlayer> players = memberList.stream().filter(player -> user.getId().equals(player.getUserId())).collect(Collectors.toList());
MemberPlayer player = players.get(0);
List<String> roles = getMemberRoles();
List<Role> userRoles = user.getRoles().stream().filter((role) -> roles.contains(role.getId())).collect(Collectors.toList());
if (userRoles.size() >= 1) {
int higher = 0;
Role best = null;
for (Role role : userRoles) {
if (role.getPosition() > higher) {
higher = role.getPosition();
best = role;
}
}
if (best == null) {
AutoWhitelist.logger.error("Failed to get best tier role!");
return;
}
for (Map.Entry<String, JsonElement> entry : AutoWhitelist.config.getConfigs().get("whitelist").getAsJsonObject().entrySet()) {
JsonArray jsonArray = entry.getValue().getAsJsonArray();
for (JsonElement value : jsonArray) {
if (value.getAsString().equals(best.getId())) {
if (ids.contains(user.getId()) && !player.getTeam().equals(entry.getKey())) {
try {
new SQLite().updateData(user.getId(), getUsername(player.getProfile().getId().toString()), player.getProfile().getId().toString(), entry.getKey());
} catch (IOException e) {
AutoWhitelist.logger.error("Failed to get username!", e);
return;
}
}
}
}
}
} else if (!AutoWhitelist.server.getPlayerManager().isOperator(player.getProfile())) {
new SQLite().removeMemberById(player.getUserId());
AutoWhitelist.removePlayer(player.getProfile());
}
}
});
}
}

Ver arquivo

@ -1,7 +1,9 @@
package com.awakenedredstone.autowhitelist.config;
package com.awakenedredstone.autowhitelist.json;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import com.google.gson.*;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@ -9,9 +11,9 @@ import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class JsonHelper {
import static com.awakenedredstone.autowhitelist.AutoWhitelist.GSON;
public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
public class JsonHelper {
@Nullable
public static JsonElement parseJsonFile(File file) {

Ver arquivo

@ -0,0 +1,6 @@
package com.awakenedredstone.autowhitelist.json;
public class JsonProcessor {
}

Ver arquivo

@ -1,7 +1,7 @@
package com.awakenedredstone.autowhitelist.server;
import com.awakenedredstone.autowhitelist.AutoWhitelist;
import com.awakenedredstone.autowhitelist.bot.Bot;
import com.awakenedredstone.autowhitelist.discord.Bot;
import com.awakenedredstone.autowhitelist.commands.AutoWhitelistCommand;
import com.awakenedredstone.autowhitelist.database.SQLite;
import net.fabricmc.api.DedicatedServerModInitializer;
@ -14,7 +14,6 @@ public class AutoWhitelistServer implements DedicatedServerModInitializer {
@Override
public void onInitializeServer() {
new SQLite().connect();
ServerLifecycleEvents.SERVER_STARTING.register(server -> AutoWhitelistCommand.register(server.getCommandManager().getDispatcher()));
ServerLifecycleEvents.SERVER_STOPPED.register((server -> Bot.stopBot()));
ServerLifecycleEvents.SERVER_STARTED.register((server -> {