diff --git a/.gitignore b/.gitignore index 5d2d2e5..8dfb399 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,14 @@ .idea/ +.vscode/ *.iml *.ipr *.iws lib/ run/ out/ +bin/ build/ .gradle/ classes/ lombok.config -src/main/resources/english.zip \ No newline at end of file +extra.properties diff --git a/build.gradle b/build.gradle index f47f413..9a69257 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' - id 'maven-publish' - id "io.freefair.lombok" version "6.0.0-m2" + id "fabric-loom" version "1.11-SNAPSHOT" + id "maven-publish" + id "io.freefair.lombok" version "8.10" } -apply from: 'https://raw.githubusercontent.com/DarkKronicle/GradleScripts/main/gradle/publish.gradle' +// apply from: 'https://raw.githubusercontent.com/DarkKronicle/GradleScripts/main/gradle/publish.gradle' -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 +sourceCompatibility = JavaVersion.VERSION_21 +targetCompatibility = JavaVersion.VERSION_21 archivesBaseName = project.archives_base_name version = "${project.minecraft_version}-${project.mod_version}" @@ -24,10 +24,14 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" - modImplementation "fi.dy.masa.malilib:malilib-fabric-1.20.2:${project.malilib_version}" - //modImplementation "com.github.DarkKronicle:AdvancedChatCore:${project.advancedchat_version}" - modImplementation "io.github.darkkronicle:AdvancedChatCore:1.20.4-1.5.10" // only used to build the mod locally + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + modImplementation "com.github.sakura-ryoko:malilib:${project.malilib_version}" + //modImplementation "com.github.DarkKronicle:AdvancedChatCore:${project.mod_version}" + modImplementation "io.github.darkkronicle:AdvancedChatCore:${project.minecraft_version}-${project.mod_version}" + // modImplementation files("libs/AdvancedChatCore-${project.mod_version}.jar") + + implementation "org.mariuszgromada.math:MathParser.org-mXparser:${project.mxparser_version}" + include "org.mariuszgromada.math:MathParser.org-mXparser:${project.mxparser_version}" implementation "org.languagetool:language-en:5.5" // Transitive @@ -62,10 +66,14 @@ processResources { tasks.withType(JavaCompile).configureEach { it.options.encoding = "UTF-8" - it.options.release = 16 + it.options.release = 21 } java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + withSourcesJar() } @@ -89,6 +97,7 @@ publishing { // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { - + // uncomment to publish to the local maven + mavenLocal() } } diff --git a/gradle.properties b/gradle.properties index 77a1ea2..319debe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,15 +1,19 @@ -minecraft_version=1.20.4 -yarn_mappings=1.20.4+build.3 -loader_version=0.15.3 -fabric_api_version=0.92.0+1.20.4 +org.gradle.jvmargs=-Xmx1G +org.gradle.parallel=true -mod_version=1.1.6 +minecraft_version=1.21.8 +yarn_mappings=1.21.8+build.1 +loader_version=0.17.2 +loom_version=1.11-SNAPSHOT + +fabric_version=0.132.0+1.21.8 + +mod_version=1.8.0 maven_group=io.github.darkkronicle archives_base_name=AdvancedChatBox -malilib_version = 0.17.0 -advancedchat_version=1.5.7 + +malilib_version=1.21.8-0.25.5-sakura.4 mxparser_version=4.4.2 -org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # Uploading data curseforge_slug=advancedchatbox @@ -26,4 +30,4 @@ project_logo=https://raw.githubusercontent.com/DarkKronicle/AdvancedChatBox/main project_color=0x4480ad changelog_hide_unimportant_commits=true changelog_max_commit_search=200 -discord_webhook_changelog_line_limit=10 \ No newline at end of file +discord_webhook_changelog_line_limit=10 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7c08e4f..d4081da 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists \ No newline at end of file +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index df3a6fe..965aff3 100755 --- a/gradlew +++ b/gradlew @@ -180,4 +180,4 @@ APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -exec "$JAVACMD" "$@" \ No newline at end of file +exec "$JAVACMD" "$@" diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestor.java b/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestor.java index e680c07..1bf6a35 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestor.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestor.java @@ -33,6 +33,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.network.ClientCommandSource; import net.minecraft.command.CommandSource; /** A maintainer of suggestions to suggest to the player. */ @@ -42,7 +43,7 @@ public class ChatSuggestor { /** Parsed command results */ @Getter - private ParseResults parse; + private ParseResults parse; /** Suggestions to complete */ @Getter @@ -100,7 +101,7 @@ public void updateCommandSuggestions() { */ public void updateCommandSuggestions(Runnable after) { allSuggestions = null; - CommandDispatcher commandDispatcher = client.player.networkHandler.getCommandDispatcher(); + CommandDispatcher commandDispatcher = client.player.networkHandler.getCommandDispatcher(); pendingSuggestions = commandDispatcher.getCompletionSuggestions(this.parse, getCursorIndex()) .thenApplyAsync(AdvancedSuggestions::fromSuggestions); if (after != null) { @@ -114,7 +115,7 @@ public void updateCommandSuggestions(Runnable after) { * @param stringReader StringReader which contains reading string */ public void updateParse(StringReader stringReader) { - CommandDispatcher commandDispatcher = client.player.networkHandler.getCommandDispatcher(); + CommandDispatcher commandDispatcher = client.player.networkHandler.getCommandDispatcher(); if (parse == null) { parse = commandDispatcher.parse(stringReader, client.player.networkHandler.getCommandSource()); } diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestorGui.java b/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestorGui.java index 81bb174..cb4eb10 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestorGui.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/chat/ChatSuggestorGui.java @@ -31,6 +31,7 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.network.ClientCommandSource; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.Rect2i; @@ -180,8 +181,10 @@ private void showIfActive() { if (this.suggestor.getSuggestions().isEmpty() && !this.suggestor.getParse().getExceptions().isEmpty()) { int builtInExceptions = 0; - for (Map.Entry, CommandSyntaxException> commandNodeCommandSyntaxExceptionEntry : this.suggestor - .getParse().getExceptions().entrySet()) { + for ( + Map.Entry, CommandSyntaxException> commandNodeCommandSyntaxExceptionEntry : + this.suggestor.getParse().getExceptions().entrySet() + ) { CommandSyntaxException commandSyntaxException = commandNodeCommandSyntaxExceptionEntry.getValue(); if (commandSyntaxException.getType() == CommandSyntaxException.BUILT_IN_EXCEPTIONS .literalIncorrect()) { @@ -211,16 +214,16 @@ private void showIfActive() { } private void showUsages(Formatting formatting) { - CommandContextBuilder commandContextBuilder = this.suggestor.getParse().getContext(); - SuggestionContext suggestionContext = + CommandContextBuilder commandContextBuilder = this.suggestor.getParse().getContext(); + SuggestionContext suggestionContext = commandContextBuilder.findSuggestionContext(this.textField.getCursor()); - Map, String> map = this.client.player.networkHandler.getCommandDispatcher() + Map, String> map = this.client.player.networkHandler.getCommandDispatcher() .getSmartUsage(suggestionContext.parent, this.client.player.networkHandler.getCommandSource()); List list = new ArrayList<>(); int i = 0; Style style = Style.EMPTY.withColor(formatting); - for (Map.Entry, String> commandNodeStringEntry : map.entrySet()) { + for (Map.Entry, String> commandNodeStringEntry : map.entrySet()) { if (!(commandNodeStringEntry.getKey() instanceof LiteralCommandNode)) { list.add(OrderedText.styledForwardsVisitedString(commandNodeStringEntry.getValue(), style)); i = Math.max(i, this.textRenderer.getWidth(commandNodeStringEntry.getValue())); @@ -451,7 +454,8 @@ public void select(int index) { ChatSuggestorGui.this.textField.setSuggestion(ChatSuggestorGui .getSuggestionSuffix(ChatSuggestorGui.this.textField.getText(), suggestion.apply(this.typedText))); if (client.getNarratorManager().isActive() && this.lastNarrationIndex != this.selection) { - client.getNarratorManager().narrate(this.getNarration()); + Text narrationText = Text.literal(this.getNarration()); + client.getNarratorManager().narrate(narrationText); } } diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/config/ChatBoxConfigStorage.java b/src/main/java/io/github/darkkronicle/advancedchatbox/config/ChatBoxConfigStorage.java index 0eb38ab..57ec832 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/config/ChatBoxConfigStorage.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/config/ChatBoxConfigStorage.java @@ -64,7 +64,7 @@ public static String translate(String key) { .fromConfig("availableSuggestionColor", new ConfigColor(translate("availablesuggestioncolor"), new Color(150, 150, 150, 255), translate("info.availablesuggestioncolor"))); - public static final ImmutableList> OPTIONS = + public static final List> OPTIONS = ImmutableList.of(HIGHLIGHT_COLOR, UNHIGHLIGHT_COLOR, BACKGROUND_COLOR, SUGGESTION_SIZE, REMOVE_IDENTIFIER, PRUNE_PLAYER_SUGGESTIONS, AVAILABLE_SUGGESTION_COLOR); } @@ -90,7 +90,7 @@ public static String translate(String key) { // ) // ); - public static final ImmutableList> OPTIONS = ImmutableList.of(HOVER_TEXT + public static final List> OPTIONS = ImmutableList.of(HOVER_TEXT // SUGGEST_CAPITAL ); } diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/ColorCodeFormatter.java b/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/ColorCodeFormatter.java index 65b8747..045ecbd 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/ColorCodeFormatter.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/ColorCodeFormatter.java @@ -16,7 +16,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.command.CommandSource; +import net.minecraft.client.network.ClientCommandSource; import net.minecraft.text.MutableText; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -26,7 +26,7 @@ public class ColorCodeFormatter implements IMessageFormatter { @Override - public Optional format(Text text, @Nullable ParseResults parse) { + public Optional format(Text text, @Nullable ParseResults parse) { if (parse != null) { return Optional.empty(); } diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/CommandColorer.java b/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/CommandColorer.java index 444d731..7a9fd0b 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/CommandColorer.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/CommandColorer.java @@ -39,6 +39,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.network.ClientCommandSource; import net.minecraft.command.CommandSource; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -57,14 +58,14 @@ private CommandColorer() { } @Override - public Optional format(Text text, @Nullable ParseResults parse) { + public Optional format(Text text, @Nullable ParseResults parse) { if (parse == null) { if (text.getString().charAt(0) == '/') { return Optional.of(Text.literal(text.getString()).fillStyle(Style.EMPTY.withColor(CommandColorerStorage.ERROR_COLOR.config.get().color()))); } return Optional.empty(); } - CommandContextBuilder commandContextBuilder = parse.getContext().getLastChild(); + CommandContextBuilder commandContextBuilder = parse.getContext().getLastChild(); HashMap replace = new HashMap<>(); int lowest = -1; int max = 0; @@ -118,39 +119,39 @@ public Optional format(Text text, @Nullable ParseResults pa return Optional.of(text); } - private List> compileObjects(ParseResults parse, String input) { - CommandContextBuilder commandContextBuilder = parse.getContext(); + private List> compileObjects(ParseResults parse, String input) { + CommandContextBuilder commandContextBuilder = parse.getContext(); List> sections = new ArrayList<>(); - for (CommandContextBuilder child : getAllChildren(commandContextBuilder)) { + for (CommandContextBuilder child : getAllChildren(commandContextBuilder)) { sections.addAll(addSubs(child, input)); sections.addAll(addArgs(child, input)); } return sections; } - private List>> addSubs(CommandContextBuilder context, + private List>> addSubs(CommandContextBuilder context, String input) { - List>> nodes = new ArrayList<>(); - for (ParsedCommandNode node : context.getNodes()) { + List>> nodes = new ArrayList<>(); + for (ParsedCommandNode node : context.getNodes()) { nodes.add(new CommandSection<>(node, fromRange(node.getRange(), input), CommandSection.Section.COMMAND)); } return nodes; } - private List>> addArgs(CommandContextBuilder context, + private List>> addArgs(CommandContextBuilder context, String input) { - List>> nodes = new ArrayList<>(); + List>> nodes = new ArrayList<>(); if (context.getArguments() == null) { return nodes; } - for (ParsedArgument node : context.getArguments().values()) { + for (ParsedArgument node : context.getArguments().values()) { nodes.add(new CommandSection<>(node, fromRange(node.getRange(), input), CommandSection.Section.ARGUMENT)); } return nodes; } - private List> getAllChildren(CommandContextBuilder context) { - List> children = new ArrayList<>(); + private List> getAllChildren(CommandContextBuilder context) { + List> children = new ArrayList<>(); while (context != null) { children.add(context); context = context.getChild(); @@ -169,24 +170,24 @@ private static StringMatch fromRange(StringRange range, String input) { return new StringMatch(range.get(input), range.getStart(), range.getEnd()); } + @SuppressWarnings("unchecked") // Compiler and LSP are disagreeing :( @Override public JsonObject save() { JsonObject obj = new JsonObject(); - // Compiler is weird and casting is required ConfigStorage.writeOptions(obj, CommandColorerStorage.NAME, - (List>) CommandColorerStorage.OPTIONS); + (List>) (List) CommandColorerStorage.OPTIONS); return obj; } + @SuppressWarnings("unchecked") // Compiler and LSP are disagreeing :( @Override public void load(JsonElement element) { if (!element.isJsonObject()) { return; } JsonObject obj = element.getAsJsonObject(); - // Compiler is weird and casting is required ConfigStorage.readOptions(obj, CommandColorerStorage.NAME, - (List>) CommandColorerStorage.OPTIONS); + (List>) (List) CommandColorerStorage.OPTIONS); } @Override diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/JSONFormatter.java b/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/JSONFormatter.java index 94d5dbf..4d092ec 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/JSONFormatter.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/formatter/JSONFormatter.java @@ -20,7 +20,7 @@ import lombok.Value; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.command.CommandSource; +import net.minecraft.client.network.ClientCommandSource; import net.minecraft.text.MutableText; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -61,7 +61,7 @@ public static class JSONToken { } @Override - public Optional format(Text text, @Nullable ParseResults parse) { + public Optional format(Text text, @Nullable ParseResults parse) { String content = text.getString(); Optional> omatches = SearchUtils.findMatches(content, "\\{.+\\}", FindType.REGEX); if (!omatches.isPresent()) { diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageFormatter.java b/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageFormatter.java index 8c4fcf3..bd4663b 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageFormatter.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageFormatter.java @@ -10,7 +10,8 @@ import com.mojang.brigadier.ParseResults; import java.util.Optional; import javax.annotation.Nullable; -import net.minecraft.command.CommandSource; + +import net.minecraft.client.network.ClientCommandSource; import net.minecraft.text.Text; /** An interface for formatting the chat text box on the chat screen. */ @@ -22,5 +23,5 @@ public interface IMessageFormatter { * @param parse Current commands that have been parsed * @return Text that should render on the chat text bar. If empty it won't modify. */ - Optional format(Text text, @Nullable ParseResults parse); + Optional format(Text text, @Nullable ParseResults parse); } diff --git a/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageSuggestor.java b/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageSuggestor.java index 06c51f2..6ba5bb3 100644 --- a/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageSuggestor.java +++ b/src/main/java/io/github/darkkronicle/advancedchatbox/interfaces/IMessageSuggestor.java @@ -15,7 +15,7 @@ /** * An interface for building suggestions for the - * {@link io.github.darkkronicle.advancedchat.chat.ChatSuggestor} + * {@link io.github.darkkronicle.advancedchatbox.chat.ChatSuggestor} */ public interface IMessageSuggestor { /** diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 4c27ef3..f172053 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -21,11 +21,11 @@ ] }, "depends": { - "fabricloader": ">=0.14.18", + "fabricloader": ">=0.16.3", "fabric": "*", - "minecraft": ">=1.20", - "malilib": ">=0.16.0", - "advancedchatcore": ">=1.5.0-1.19" + "minecraft": ">=1.21.4", + "malilib": ">=0.21.0", + "advancedchatcore": ">=1.7.0" }, "custom": { "acmodule": true,