diff --git a/build.gradle.kts b/build.gradle.kts
index 523d6b7..8c89e0a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +1,5 @@
plugins {
- id("fabric-loom") version "1.15-SNAPSHOT"
+ id("net.fabricmc.fabric-loom") version "1.16-SNAPSHOT"
id("com.gradleup.shadow") version "9.3.1"
}
@@ -24,7 +24,6 @@ loom {
repositories {
mavenCentral()
maven("https://maven.isxander.dev/releases")
- maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
exclusiveContent {
forRepository {
maven {
@@ -41,21 +40,18 @@ repositories {
dependencies {
// To change the versions see the gradle.properties file
minecraft("com.mojang:minecraft:${project.property("minecraft_version")}")
- mappings(loom.officialMojangMappings())
- modImplementation("net.fabricmc:fabric-loader:${project.property("loader_version")}")
+ implementation("net.fabricmc:fabric-loader:${project.property("loader_version")}")
- modImplementation("net.fabricmc.fabric-api:fabric-api:${project.property("fabric_version")}")
+ implementation("net.fabricmc.fabric-api:fabric-api:${project.property("fabric_version")}")
shadow(implementation("org.mongodb:mongodb-driver-sync:5.6.3")!!)
shadow(implementation("net.dv8tion:JDA:6.3.0") { exclude("opus-java") })
- shadow(modImplementation("maven.modrinth:fabric-yaml-configuration:1.0.1")!!)
-
shadow(implementation("dev.vankka:mcdiscordreserializer:4.3.0")!!)
- shadow(modImplementation("net.kyori:adventure-platform-mod-shared-fabric-repack:6.8.0")!!)
+ shadow(implementation("net.kyori:adventure-platform-mod-shared:6.9.0")!!)
shadow(implementation("com.sparkjava:spark-core:2.9.4")!!)
- modRuntimeOnly("me.djtheredstoner:DevAuth-fabric:1.2.2")
+ runtimeOnly("net.litetex.mcm:dev-auth-neo:1.1.0")
}
tasks.processResources {
@@ -80,15 +76,9 @@ tasks {
from(sourceSets["main"].output)
from(sourceSets["client"].output)
configurations = listOf(project.configurations.shadow.get())
- archiveClassifier = "shadowed-only"
- // minimize()
- }
- remapJar {
- dependsOn(shadowJar)
- mustRunAfter(shadowJar)
- inputFile = file(shadowJar.get().archiveFile)
archiveClassifier = ""
+ // minimize()
}
}
-java { toolchain.languageVersion = JavaLanguageVersion.of(21) }
+java { toolchain.languageVersion = JavaLanguageVersion.of(25) }
diff --git a/gradle.properties b/gradle.properties
index 9490e21..46cd0ab 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,12 +3,12 @@ org.gradle.jvmargs=-Xmx1G
org.gradle.configuration-cache=false
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
-minecraft_version=1.21.11
-loader_version=0.18.4
+minecraft_version=26.1.2
+loader_version=0.19.2
# Mod Properties
-mod_version=2.19.2
+mod_version=2.20.0
maven_group=net.legitimoose
archives_base_name=Legitimoose-Bot
# Dependencies
# check this on https://modmuss50.me/fabric.html
-fabric_version=0.141.3+1.21.11
+fabric_version=0.149.1+26.1.2
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 8bdaf60..61285a6 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 19a6bde..5dd3c01 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index ef07e01..adff685 100755
--- a/gradlew
+++ b/gradlew
@@ -114,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -172,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
diff --git a/gradlew.bat b/gradlew.bat
index 5eed7ee..e509b2d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -70,11 +70,10 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/src/client/java/net/legitimoose/bot/LegitimooseBotClient.java b/src/client/java/net/legitimoose/bot/LegitimooseBotClient.java
index f0c53a9..88c44f4 100644
--- a/src/client/java/net/legitimoose/bot/LegitimooseBotClient.java
+++ b/src/client/java/net/legitimoose/bot/LegitimooseBotClient.java
@@ -2,8 +2,8 @@
import com.mojang.brigadier.context.CommandContext;
import net.fabricmc.api.ClientModInitializer;
-import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommands;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
import net.fabricmc.loader.api.FabricLoader;
@@ -97,17 +97,17 @@ private void schedulePeriodicalMessage() {
private void registerCommands() {
ClientCommandRegistrationCallback.EVENT.register((dispatcher, context) -> {
dispatcher.register(
- ClientCommandManager.literal("scraper")
- .then(ClientCommandManager.literal("reload")
+ ClientCommands.literal("scraper")
+ .then(ClientCommands.literal("reload")
.executes(LegitimooseBotClient::reloadConfig)
)
- .then(ClientCommandManager.literal("on")
+ .then(ClientCommands.literal("on")
.executes((source)->{
Scraper.getInstance().override(false);
return 0;
})
)
- .then(ClientCommandManager.literal("off")
+ .then(ClientCommands.literal("off")
.executes((source)->{
Scraper.getInstance().override(true);
return 0;
@@ -119,7 +119,7 @@ private void registerCommands() {
private static int reloadConfig(CommandContext> context) {
try {
- CONFIG.reloadConfiguration();
+ CONFIG.reload();
} catch (Exception e) {
LOGGER.error(e.getMessage());
return 1;
@@ -166,7 +166,7 @@ private static void message(String message) {
LocalPlayer player = Minecraft.getInstance().player;
if (player != null) {
- player.displayClientMessage(Component.literal(message), false);
+ player.sendSystemMessage(Component.literal(message));
}
}
diff --git a/src/client/java/net/legitimoose/bot/chat/GameChatHandler.java b/src/client/java/net/legitimoose/bot/chat/GameChatHandler.java
index 28b3f8a..58cf3a6 100644
--- a/src/client/java/net/legitimoose/bot/chat/GameChatHandler.java
+++ b/src/client/java/net/legitimoose/bot/chat/GameChatHandler.java
@@ -73,7 +73,7 @@ public void handleChat(Component component) {
lastMessages.add(message);
if (handleChat) {
- DiscordWebhook webhook = new DiscordWebhook(CONFIG.getString("webhook"));
+ DiscordWebhook webhook = new DiscordWebhook(CONFIG.webhook);
handleChat(component, message, webhook);
}
}
@@ -139,7 +139,7 @@ public void handleMsgMessage(MsgMatcher msg) {
User user;
if (discordReceiverName != null) {
String finalUsername = discordReceiverName.replace("@", "");
- user = DiscordBot.jda.getGuildById(CONFIG.getString("guildId"))
+ user = DiscordBot.jda.getGuildById(CONFIG.guildId)
.findMembers(s -> s.getUser().getName().equals(finalUsername))
.get().getFirst().getUser();
} else {
@@ -272,7 +272,7 @@ private boolean shouldLogMessage(String senderName, String message) {
Minecraft.getInstance().player.getPlainTextName().equals(senderName)))
return false;
- return !message.startsWith(CONFIG.getString("secretPrefix"));
+ return !message.startsWith(CONFIG.secretPrefix);
}
public static GameChatHandler getInstance() {
diff --git a/src/client/java/net/legitimoose/bot/discord/DiscordBot.java b/src/client/java/net/legitimoose/bot/discord/DiscordBot.java
index ede28b0..9266c0b 100644
--- a/src/client/java/net/legitimoose/bot/discord/DiscordBot.java
+++ b/src/client/java/net/legitimoose/bot/discord/DiscordBot.java
@@ -44,7 +44,7 @@ public static void run() {
new Rejoin(),
new Send()
);
- jda = JDABuilder.createDefault(CONFIG.getString("token"))
+ jda = JDABuilder.createDefault(CONFIG.token)
.enableIntents(GatewayIntent.MESSAGE_CONTENT, GatewayIntent.GUILD_MEMBERS)
.build();
@@ -98,7 +98,7 @@ public static void run() {
@Override
public void onGuildReady(GuildReadyEvent event) {
- if (!event.getGuild().getId().equals(CONFIG.getString("guildId"))) return;
+ if (!event.getGuild().getId().equals(CONFIG.guildId)) return;
event.getGuild()
.updateCommands()
.addCommands(
@@ -119,7 +119,7 @@ public void onGuildReady(GuildReadyEvent event) {
public void onMessageReceived(MessageReceivedEvent event) {
String discordNick;
if (event.isWebhookMessage()) {
- if (!event.getAuthor().getId().equals(CONFIG.getString("bridgeWebhookId"))) return;
+ if (!event.getAuthor().getId().equals(CONFIG.bridgeWebhookId)) return;
discordNick = event.getAuthor().getEffectiveName();
} else {
discordNick = event.getMember().getEffectiveName();
@@ -131,9 +131,9 @@ public void onMessageReceived(MessageReceivedEvent event) {
if (!event.getMessage().getAttachments().isEmpty()) {
message += " [Attachment Included]";
}
- if (CONFIG.getString("channelId").isEmpty())
+ if (CONFIG.channelId.isEmpty())
LOGGER.error("Discord channel ID is not set in config!");
- if (event.getChannel().getId().equals(CONFIG.getString("channelId"))) {
+ if (event.getChannel().getId().equals(CONFIG.channelId)) {
Minecraft.getInstance().player.connection.sendChat(McUtil.sanitizeString(message));
}
}
diff --git a/src/client/java/net/legitimoose/bot/discord/command/ShoutCommand.java b/src/client/java/net/legitimoose/bot/discord/command/ShoutCommand.java
index 0c6355b..d001a60 100644
--- a/src/client/java/net/legitimoose/bot/discord/command/ShoutCommand.java
+++ b/src/client/java/net/legitimoose/bot/discord/command/ShoutCommand.java
@@ -29,7 +29,7 @@ public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
bypassCooldown = false;
username = event.getUser().getEffectiveName();
} else {
- bypassCooldown = event.getMember().getPermissions().contains(Permission.MANAGE_SERVER) && event.getGuild().getId().equals(CONFIG.getString("guildId"));
+ bypassCooldown = event.getMember().getPermissions().contains(Permission.MANAGE_SERVER) && event.getGuild().getId().equals(CONFIG.guildId);
username = event.getMember().getEffectiveName();
}
diff --git a/src/client/java/net/legitimoose/bot/scraper/Database.java b/src/client/java/net/legitimoose/bot/scraper/Database.java
index 18473f7..1c0a352 100644
--- a/src/client/java/net/legitimoose/bot/scraper/Database.java
+++ b/src/client/java/net/legitimoose/bot/scraper/Database.java
@@ -14,7 +14,7 @@ public class Database {
private static final String DATABASE_NAME = "legitimooseapi";
private static final MongoClient mongoClient =
- MongoClients.create(CONFIG.getString("mongoUri"));
+ MongoClients.create(CONFIG.mongoUri);
private final MongoDatabase database =
mongoClient.getDatabase(DATABASE_NAME);
diff --git a/src/client/java/net/legitimoose/bot/scraper/Scraper.java b/src/client/java/net/legitimoose/bot/scraper/Scraper.java
index d27c09f..133e33d 100644
--- a/src/client/java/net/legitimoose/bot/scraper/Scraper.java
+++ b/src/client/java/net/legitimoose/bot/scraper/Scraper.java
@@ -16,7 +16,7 @@
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.ComponentSerialization;
import net.minecraft.world.Container;
-import net.minecraft.world.inventory.ClickType;
+import net.minecraft.world.inventory.ContainerInput;
import net.minecraft.world.item.ItemStack;
import org.bson.BsonArray;
import org.bson.BsonDateTime;
@@ -43,7 +43,7 @@ public class Scraper {
private volatile boolean scrapeOverride = false;
- private final DiscordWebhook errorWebhook = new DiscordWebhook(CONFIG.getString("errorWebhook"));
+ private final DiscordWebhook errorWebhook = new DiscordWebhook(CONFIG.errorWebhook);
private final Pattern jamScorePattern = Pattern.compile("^CategoryScore\\(rank=(.*), score=(.*)\\)");
private final Pattern ownerNamePattern = Pattern.compile("^by (?:[^|]+\\|\\s*)?(.+)");
@@ -89,7 +89,7 @@ private void error(String message, Exception exception) throws IOException, URIS
}
public void scrape() {
- if (!CONFIG.getBoolean("scrape", true)) return;
+ if (!CONFIG.scrape) return;
Minecraft client = Minecraft.getInstance();
MongoCollection stats = Database.getStats();
stats.createIndex(Indexes.descending("timestamp"));
@@ -262,8 +262,8 @@ public void scrape() {
LOGGER.info("Scraped page #{}", i);
Minecraft.getInstance()
.gameMode
- .handleInventoryMouseClick(
- client.player.containerMenu.containerId, 32, 0, ClickType.PICKUP, client.player
+ .handleContainerInput(
+ client.player.containerMenu.containerId, 32, 0, ContainerInput.PICKUP, client.player
);
waitSeconds(1); // wait a sec to give legmos time to load
}
diff --git a/src/main/java/net/legitimoose/bot/Config.java b/src/main/java/net/legitimoose/bot/Config.java
new file mode 100644
index 0000000..e96d2f4
--- /dev/null
+++ b/src/main/java/net/legitimoose/bot/Config.java
@@ -0,0 +1,45 @@
+package net.legitimoose.bot;
+
+import com.google.gson.Gson;
+
+import java.io.*;
+import java.nio.file.Files;
+
+public class Config {
+ public static final Gson gson = new Gson();
+
+ private transient File file;
+
+ public String token;
+ public String webhook;
+ public String errorWebhook;
+ public boolean scrape;
+ public String bridgeWebhookId;
+ public String mongoUri;
+ public String secretPrefix;
+ public String channelId;
+ public String guildId;
+
+ public static Config create(File file, InputStream defaultFile) throws IOException {
+ if (!file.exists()) {
+ Files.copy(defaultFile, file.toPath());
+ }
+ Config config = gson.fromJson(new FileReader(file), Config.class);
+ config.file = file;
+ return config;
+ }
+
+ public void reload() throws FileNotFoundException {
+ Config temp = gson.fromJson(new FileReader(file), Config.class);
+
+ this.token = temp.token;
+ this.webhook = temp.webhook;
+ this.errorWebhook = temp.errorWebhook;
+ this.scrape = temp.scrape;
+ this.bridgeWebhookId = temp.bridgeWebhookId;
+ this.mongoUri = temp.mongoUri;
+ this.secretPrefix = temp.secretPrefix;
+ this.channelId = temp.channelId;
+ this.guildId = temp.guildId;
+ }
+}
diff --git a/src/main/java/net/legitimoose/bot/LegitimooseBot.java b/src/main/java/net/legitimoose/bot/LegitimooseBot.java
index 80f3f2b..e038108 100644
--- a/src/main/java/net/legitimoose/bot/LegitimooseBot.java
+++ b/src/main/java/net/legitimoose/bot/LegitimooseBot.java
@@ -3,29 +3,22 @@
import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import ru.mountcode.libraries.yaml.InvalidConfigurationException;
-import ru.mountcode.mods.fabricyamlconfiguration.yaml.FabricConfiguration;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public class LegitimooseBot implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("legitimoose-bot");
- public static final FabricConfiguration CONFIG = new FabricConfiguration();
+ public static Config CONFIG;
@Override
public void onInitialize() {
InputStream defaultConfigFile = LegitimooseBot.class.getResourceAsStream("/assets/legitimoose-bot/config/legitimoosebot.yml");
-
- CONFIG.setDefault(defaultConfigFile);
- CONFIG.setFile("config/legitimoosebot.yml");
-
try {
- CONFIG.initialize();
+ CONFIG = Config.create(new File("config/legitimoosebot.json"), defaultConfigFile);
} catch (IOException e) {
- LOGGER.error("Configuration file cannot be generated", e);
- } catch (InvalidConfigurationException e) {
- LOGGER.error("Configuration file cannot be loaded", e);
+ LOGGER.error("failed to initialize config", e);
}
}
}
diff --git a/src/main/resources/assets/legitimoose-bot/config/legitimoosebot.json b/src/main/resources/assets/legitimoose-bot/config/legitimoosebot.json
new file mode 100644
index 0000000..b149177
--- /dev/null
+++ b/src/main/resources/assets/legitimoose-bot/config/legitimoosebot.json
@@ -0,0 +1,11 @@
+{
+ "token": "",
+ "webhook": "",
+ "errorWebhook": "",
+ "scrape": true,
+ "bridgeWebhookId": "1473335695299837992",
+ "mongoUri": "mongodb://127.0.0.1:27017/",
+ "secretPrefix": "::",
+ "channelId": "",
+ "guildId": "1311574348989071440"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/legitimoose-bot/config/legitimoosebot.yml b/src/main/resources/assets/legitimoose-bot/config/legitimoosebot.yml
deleted file mode 100644
index e7653d5..0000000
--- a/src/main/resources/assets/legitimoose-bot/config/legitimoosebot.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-token: ''
-webhook: ''
-errorWebhook: ''
-scrape: true
-bridgeWebhookId: '1473335695299837992'
-mongoUri: 'mongodb://127.0.0.1:27017/'
-secretPrefix: '::'
-channelId: ''
-guildId: '1311574348989071440'