diff --git a/LICENSE.txt b/LICENSE.txt index 8e290a8..f28a123 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2025 DevPieter +Copyright (c) 2026 DevPieter Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/build.gradle b/build.gradle index 0784e65..76acdf8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,19 +1,28 @@ plugins { - id 'fabric-loom' + id 'net.fabricmc.fabric-loom' id 'com.replaymod.preprocess' id 'maven-publish' } -def targetJavaVersion = 21 - def isSnapshot = providers.environmentVariable("SNAPSHOT_BUILD").map { it.toBoolean() }.orElse(false).get() def buildNumber = System.getenv('BUILD_NUMBER') ?: 'dev' -group = maven_group -version = "${mod_version}+${minecraft_version}-${max_minecraft_version}" + (isSnapshot ? "-SNAPSHOT+${buildNumber}" : "") +group = project.maven_group +version = "${project.mod_version}+${project.minecraft_version}-${project.max_minecraft_version}" + (isSnapshot ? "-SNAPSHOT+${buildNumber}" : "") base { - archivesName = archives_base_name + archivesName = project.archives_base_name +} + +loom { + splitEnvironmentSourceSets() + + mods { + "utilize" { + sourceSet sourceSets.main + sourceSet sourceSets.client + } + } } repositories { @@ -24,11 +33,10 @@ repositories { } dependencies { - minecraft "com.mojang:minecraft:${minecraft_version}" - mappings "net.fabricmc:yarn:${yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${loader_version}" + minecraft "com.mojang:minecraft:${project.minecraft_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" implementation "nl.devpieter:sees:1.2.1" include "nl.devpieter:sees:1.2.1" @@ -54,29 +62,44 @@ processResources { } } +def targetJavaVersion = 25 tasks.withType(JavaCompile).configureEach { - options.encoding = "UTF-8" + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + it.options.release.set(targetJavaVersion) + } } java { - toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. withSourcesJar() - withJavadocJar() } jar { from("LICENSE") { - rename { "${it}_${base.archivesName.get()}" } + rename { "${it}_${project.archives_base_name}" } } } +// configure the maven publication publishing { publications { - mavenJava(MavenPublication) { + create("mavenJava", MavenPublication) { + artifactId = project.archives_base_name from components.java - artifactId = artifact_id } } + repositories { maven { url = uri(providers.gradleProperty("mavenRepositoryUrl").orNull ?: "http://localhost:8081/releases/nl/devpieter/utilize") diff --git a/gradle.properties b/gradle.properties index 0b47489..d12076d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,10 +3,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html -loader_version=0.18.4 +loader_version=0.19.3 # Mod Properties -artifact_id=utilize -mod_version=1.1.2 +mod_version=2.0.0 maven_group=nl.devpieter -archives_base_name=Utilize +archives_base_name=utilize \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..b1b8ef5 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 23449a2..a9db115 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,9 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 +retries=0 +retryBackOffMs=500 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index f5feea6..249efbb 100644 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,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" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a21..a51ec4f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,12 +19,12 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +51,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,30 +65,18 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -goto fail +"%COMSPEC%" /c exit 1 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/root.gradle b/root.gradle index 0535b8f..32fd390 100644 --- a/root.gradle +++ b/root.gradle @@ -1,16 +1,8 @@ plugins { - id 'fabric-loom' version '1.14-SNAPSHOT' apply false -// id 'com.replaymod.preprocess' version '79307437eb' - id 'com.replaymod.preprocess' version '1678b67969' + id 'net.fabricmc.fabric-loom' version '1.17-SNAPSHOT' apply false + id 'com.replaymod.preprocess' version '221276c7d4' } preprocess { -// def mc12105 = createNode('1.21.5', 12105, "yarn") -// def mc12102 = createNode('1.21.2', 12102, "yarn") -// def mc12100 = createNode('1.21.0', 12100, "yarn") - -// mc12105.link(mc12102, null) -// mc12102.link(mc12100, null) - - def mc12109 = createNode('1.21.9', 12109, "yarn") + def mc261 = createNode('26.1', 261, null) } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 99ee0aa..49f8210 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,20 +1,24 @@ pluginManagement { + def replaymodPreprocessVersion = "221276c7d4" + repositories { maven { name = 'Fabric' url = 'https://maven.fabricmc.net/' } maven { - name = 'Jitpack' + name = 'JitPack' url = 'https://jitpack.io' } mavenCentral() gradlePluginPortal() } + resolutionStrategy { eachPlugin { if (requested.id.id == "com.replaymod.preprocess") { - useModule("com.github.ReplayMod:preprocessor:${requested.version}") + def resolvedVersion = requested.version ?: replaymodPreprocessVersion + useModule("com.github.ReplayMod:preprocessor:${resolvedVersion}") } } } @@ -23,11 +27,11 @@ pluginManagement { rootProject.buildFileName = "root.gradle" var versions = [ - "1.21.9" + "26.1" ] versions.forEach { version -> include(":${version}") project(":${version}").projectDir = file("versions/${version}") project(":${version}").buildFileName = "../../build.gradle" -} +} \ No newline at end of file diff --git a/src/client/java/nl/devpieter/utilize/client/UtilizeClient.java b/src/client/java/nl/devpieter/utilize/client/UtilizeClient.java new file mode 100644 index 0000000..8a005db --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/UtilizeClient.java @@ -0,0 +1,56 @@ +package nl.devpieter.utilize.client; + +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; +import nl.devpieter.utilize.Utilize; +import nl.devpieter.utilize.client.setting.SettingManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class UtilizeClient implements ClientModInitializer { + + private static UtilizeClient INSTANCE; + + private final Logger logger = LoggerFactory.getLogger("Utilize Client"); + private boolean isInitialized; + + @Override + public void onInitializeClient() { + INSTANCE = this; + + ClientLifecycleEvents.CLIENT_STOPPING.register((client) -> { + logger.info("Shutting down Utilize Client..."); + + SettingManager.shutdown(); +// AsyncRequest.shutdown(); + }); + + Utilize utilize = Utilize.getInstance(); + logger.info("Utilize Client initialized successfully! Version: {}", utilize.getUtilizeVersion()); + + isInitialized = true; + } + + /** + * Checks if Utilize has been initialized. + * + * @return true if the mod instance exists and is initialized, false otherwise + */ + public static boolean initialized() { + return INSTANCE != null && INSTANCE.isInitialized; + } + + /** + * Returns the singleton instance of Utilize. + * + * @return the initialized Utilize instance + * @throws IllegalStateException if Utilize has not been initialized yet + */ + public static UtilizeClient getInstance() { + if (INSTANCE == null || !INSTANCE.isInitialized) { + throw new IllegalStateException("Utilize has not been initialized yet!"); + } + + return INSTANCE; + } +} diff --git a/src/main/java/nl/devpieter/utilize/enums/KeyActionOverride.java b/src/client/java/nl/devpieter/utilize/client/enums/KeyActionOverride.java similarity index 65% rename from src/main/java/nl/devpieter/utilize/enums/KeyActionOverride.java rename to src/client/java/nl/devpieter/utilize/client/enums/KeyActionOverride.java index e8b4dd3..17fcb08 100644 --- a/src/main/java/nl/devpieter/utilize/enums/KeyActionOverride.java +++ b/src/client/java/nl/devpieter/utilize/client/enums/KeyActionOverride.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.enums; +package nl.devpieter.utilize.client.enums; public enum KeyActionOverride { NONE, diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/AttackKeyPressedEvent.java b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/AttackKeyPressedEvent.java similarity index 64% rename from src/main/java/nl/devpieter/utilize/events/interaction/keybinding/AttackKeyPressedEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/AttackKeyPressedEvent.java index c94cd28..393ac2b 100644 --- a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/AttackKeyPressedEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/AttackKeyPressedEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.interaction.keybinding; +package nl.devpieter.utilize.client.events.interaction.keybinding; import nl.devpieter.sees.event.SCancelableEventBase; diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/KeyBindingPressedCheckEvent.java b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/KeyBindingPressedCheckEvent.java similarity index 83% rename from src/main/java/nl/devpieter/utilize/events/interaction/keybinding/KeyBindingPressedCheckEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/KeyBindingPressedCheckEvent.java index abdc253..07e2801 100644 --- a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/KeyBindingPressedCheckEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/KeyBindingPressedCheckEvent.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.events.interaction.keybinding; +package nl.devpieter.utilize.client.events.interaction.keybinding; import nl.devpieter.sees.event.SReturnableEvent; -import nl.devpieter.utilize.enums.KeyActionOverride; +import nl.devpieter.utilize.client.enums.KeyActionOverride; import org.jetbrains.annotations.NotNull; public class KeyBindingPressedCheckEvent implements SReturnableEvent { diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/KeyBindingPressedEvent.java b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/KeyBindingPressedEvent.java similarity index 83% rename from src/main/java/nl/devpieter/utilize/events/interaction/keybinding/KeyBindingPressedEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/KeyBindingPressedEvent.java index 38a7d83..8b75a75 100644 --- a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/KeyBindingPressedEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/KeyBindingPressedEvent.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.events.interaction.keybinding; +package nl.devpieter.utilize.client.events.interaction.keybinding; import nl.devpieter.sees.event.SReturnableEvent; -import nl.devpieter.utilize.enums.KeyActionOverride; +import nl.devpieter.utilize.client.enums.KeyActionOverride; import org.jetbrains.annotations.NotNull; public class KeyBindingPressedEvent implements SReturnableEvent { diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/UseKeyPressedEvent.java b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/UseKeyPressedEvent.java similarity index 64% rename from src/main/java/nl/devpieter/utilize/events/interaction/keybinding/UseKeyPressedEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/UseKeyPressedEvent.java index 9ab28ac..cc7d6a6 100644 --- a/src/main/java/nl/devpieter/utilize/events/interaction/keybinding/UseKeyPressedEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/interaction/keybinding/UseKeyPressedEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.interaction.keybinding; +package nl.devpieter.utilize.client.events.interaction.keybinding; import nl.devpieter.sees.event.SCancelableEventBase; diff --git a/src/main/java/nl/devpieter/utilize/events/player/PlayerDamagedEvent.java b/src/client/java/nl/devpieter/utilize/client/events/player/PlayerDamagedEvent.java similarity index 71% rename from src/main/java/nl/devpieter/utilize/events/player/PlayerDamagedEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/player/PlayerDamagedEvent.java index f3addcc..ad30215 100644 --- a/src/main/java/nl/devpieter/utilize/events/player/PlayerDamagedEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/player/PlayerDamagedEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.player; +package nl.devpieter.utilize.client.events.player; import nl.devpieter.sees.event.SEvent; diff --git a/src/main/java/nl/devpieter/utilize/events/player/PlayerHealedEvent.java b/src/client/java/nl/devpieter/utilize/client/events/player/PlayerHealedEvent.java similarity index 70% rename from src/main/java/nl/devpieter/utilize/events/player/PlayerHealedEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/player/PlayerHealedEvent.java index 1e3a2ee..82ecbb1 100644 --- a/src/main/java/nl/devpieter/utilize/events/player/PlayerHealedEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/player/PlayerHealedEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.player; +package nl.devpieter.utilize.client.events.player; import nl.devpieter.sees.event.SEvent; diff --git a/src/main/java/nl/devpieter/utilize/events/tick/ClientPlayerTickEvent.java b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientPlayerTickEvent.java similarity index 57% rename from src/main/java/nl/devpieter/utilize/events/tick/ClientPlayerTickEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/tick/ClientPlayerTickEvent.java index ffb136a..05f94f3 100644 --- a/src/main/java/nl/devpieter/utilize/events/tick/ClientPlayerTickEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientPlayerTickEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.tick; +package nl.devpieter.utilize.client.events.tick; public record ClientPlayerTickEvent() implements ITickEvent { } diff --git a/src/main/java/nl/devpieter/utilize/events/tick/ClientPlayerTickTailEvent.java b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientPlayerTickTailEvent.java similarity index 58% rename from src/main/java/nl/devpieter/utilize/events/tick/ClientPlayerTickTailEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/tick/ClientPlayerTickTailEvent.java index 8e8cd13..25ab7da 100644 --- a/src/main/java/nl/devpieter/utilize/events/tick/ClientPlayerTickTailEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientPlayerTickTailEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.tick; +package nl.devpieter.utilize.client.events.tick; public record ClientPlayerTickTailEvent() implements ITickEvent { } diff --git a/src/main/java/nl/devpieter/utilize/events/tick/ClientTickEvent.java b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientTickEvent.java similarity index 54% rename from src/main/java/nl/devpieter/utilize/events/tick/ClientTickEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/tick/ClientTickEvent.java index df75c70..e18d8a0 100644 --- a/src/main/java/nl/devpieter/utilize/events/tick/ClientTickEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientTickEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.tick; +package nl.devpieter.utilize.client.events.tick; public record ClientTickEvent() implements ITickEvent { } diff --git a/src/main/java/nl/devpieter/utilize/events/tick/ClientTickTailEvent.java b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientTickTailEvent.java similarity index 56% rename from src/main/java/nl/devpieter/utilize/events/tick/ClientTickTailEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/tick/ClientTickTailEvent.java index f512b87..c23fc73 100644 --- a/src/main/java/nl/devpieter/utilize/events/tick/ClientTickTailEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/tick/ClientTickTailEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.tick; +package nl.devpieter.utilize.client.events.tick; public record ClientTickTailEvent() implements ITickEvent { } diff --git a/src/main/java/nl/devpieter/utilize/events/tick/ITickEvent.java b/src/client/java/nl/devpieter/utilize/client/events/tick/ITickEvent.java similarity index 64% rename from src/main/java/nl/devpieter/utilize/events/tick/ITickEvent.java rename to src/client/java/nl/devpieter/utilize/client/events/tick/ITickEvent.java index 78a0d1b..ed9048c 100644 --- a/src/main/java/nl/devpieter/utilize/events/tick/ITickEvent.java +++ b/src/client/java/nl/devpieter/utilize/client/events/tick/ITickEvent.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.events.tick; +package nl.devpieter.utilize.client.events.tick; import nl.devpieter.sees.event.SEvent; diff --git a/src/main/java/nl/devpieter/utilize/managers/DamageManager.java b/src/client/java/nl/devpieter/utilize/client/managers/DamageManager.java similarity index 84% rename from src/main/java/nl/devpieter/utilize/managers/DamageManager.java rename to src/client/java/nl/devpieter/utilize/client/managers/DamageManager.java index aa6bdfc..5294227 100644 --- a/src/main/java/nl/devpieter/utilize/managers/DamageManager.java +++ b/src/client/java/nl/devpieter/utilize/client/managers/DamageManager.java @@ -1,8 +1,8 @@ -package nl.devpieter.utilize.managers; +package nl.devpieter.utilize.client.managers; import nl.devpieter.sees.Sees; -import nl.devpieter.utilize.events.player.PlayerDamagedEvent; -import nl.devpieter.utilize.events.player.PlayerHealedEvent; +import nl.devpieter.utilize.client.events.player.PlayerDamagedEvent; +import nl.devpieter.utilize.client.events.player.PlayerHealedEvent; public final class DamageManager { diff --git a/src/main/java/nl/devpieter/utilize/mixins/KeyBindingMixin.java b/src/client/java/nl/devpieter/utilize/client/mixin/KeyMappingMixin.java similarity index 63% rename from src/main/java/nl/devpieter/utilize/mixins/KeyBindingMixin.java rename to src/client/java/nl/devpieter/utilize/client/mixin/KeyMappingMixin.java index ee3826f..3a462a5 100644 --- a/src/main/java/nl/devpieter/utilize/mixins/KeyBindingMixin.java +++ b/src/client/java/nl/devpieter/utilize/client/mixin/KeyMappingMixin.java @@ -1,12 +1,12 @@ -package nl.devpieter.utilize.mixins; +package nl.devpieter.utilize.client.mixin; -import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.KeyMapping; import nl.devpieter.sees.Sees; -import nl.devpieter.utilize.enums.KeyActionOverride; -import nl.devpieter.utilize.events.interaction.keybinding.AttackKeyPressedEvent; -import nl.devpieter.utilize.events.interaction.keybinding.KeyBindingPressedCheckEvent; -import nl.devpieter.utilize.events.interaction.keybinding.KeyBindingPressedEvent; -import nl.devpieter.utilize.events.interaction.keybinding.UseKeyPressedEvent; +import nl.devpieter.utilize.client.enums.KeyActionOverride; +import nl.devpieter.utilize.client.events.interaction.keybinding.AttackKeyPressedEvent; +import nl.devpieter.utilize.client.events.interaction.keybinding.KeyBindingPressedCheckEvent; +import nl.devpieter.utilize.client.events.interaction.keybinding.KeyBindingPressedEvent; +import nl.devpieter.utilize.client.events.interaction.keybinding.UseKeyPressedEvent; import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -15,28 +15,22 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(KeyBinding.class) -public abstract class KeyBindingMixin { +@Mixin(KeyMapping.class) +public abstract class KeyMappingMixin { @Shadow - private int timesPressed; - - @Shadow - public abstract void setPressed(boolean pressed); - - @Shadow - public abstract String getId(); + public abstract String getName(); @Unique private final Sees sees = Sees.getSharedInstance(); - @Inject(at = @At("RETURN"), method = "isPressed", cancellable = true) + @Inject(at = @At("RETURN"), method = "isDown", cancellable = true) private void isPressed(CallbackInfoReturnable cir) { handle(cir); if (cir.getReturnValue()) handlePress(cir); } - @Inject(at = @At("RETURN"), method = "wasPressed", cancellable = true) + @Inject(at = @At("RETURN"), method = "consumeClick", cancellable = true) private void wasPressed(CallbackInfoReturnable cir) { handle(cir); if (cir.getReturnValue()) handlePress(cir); @@ -44,22 +38,22 @@ private void wasPressed(CallbackInfoReturnable cir) { @Unique private void handle(@NotNull CallbackInfoReturnable cir) { - KeyActionOverride override = sees.dispatchWithResult(new KeyBindingPressedCheckEvent(getId())); + KeyActionOverride override = sees.dispatchWithResult(new KeyBindingPressedCheckEvent(getName())); if (override == KeyActionOverride.FORCE_RELEASE) forceRelease(cir); else if (override == KeyActionOverride.FORCE_PRESS) forcePress(cir); } @Unique private void handlePress(@NotNull CallbackInfoReturnable cir) { - String keyId = getId(); + String keyName = getName(); - if (keyId.equals("key.attack")) { + if (keyName.equals("key.attack")) { if (sees.dispatch(new AttackKeyPressedEvent())) forceRelease(cir); - } else if (keyId.equals("key.use")) { + } else if (keyName.equals("key.use")) { if (sees.dispatch(new UseKeyPressedEvent())) forceRelease(cir); } - KeyActionOverride override = sees.dispatchWithResult(new KeyBindingPressedEvent(keyId)); + KeyActionOverride override = sees.dispatchWithResult(new KeyBindingPressedEvent(keyName)); if (override == KeyActionOverride.FORCE_RELEASE) forceRelease(cir); else if (override == KeyActionOverride.FORCE_PRESS) forcePress(cir); } diff --git a/src/main/java/nl/devpieter/utilize/mixins/ClientPlayerEntityMixin.java b/src/client/java/nl/devpieter/utilize/client/mixin/LocalPlayerMixin.java similarity index 53% rename from src/main/java/nl/devpieter/utilize/mixins/ClientPlayerEntityMixin.java rename to src/client/java/nl/devpieter/utilize/client/mixin/LocalPlayerMixin.java index 724a6b8..25ac094 100644 --- a/src/main/java/nl/devpieter/utilize/mixins/ClientPlayerEntityMixin.java +++ b/src/client/java/nl/devpieter/utilize/client/mixin/LocalPlayerMixin.java @@ -1,22 +1,23 @@ -package nl.devpieter.utilize.mixins; +package nl.devpieter.utilize.client.mixin; import com.mojang.authlib.GameProfile; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.world.ClientWorld; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; import nl.devpieter.sees.Sees; -import nl.devpieter.utilize.events.tick.ClientPlayerTickEvent; -import nl.devpieter.utilize.events.tick.ClientPlayerTickTailEvent; -import nl.devpieter.utilize.managers.DamageManager; -import nl.devpieter.utilize.task.TaskManager; +import nl.devpieter.utilize.client.events.tick.ClientPlayerTickEvent; +import nl.devpieter.utilize.client.events.tick.ClientPlayerTickTailEvent; +import nl.devpieter.utilize.client.managers.DamageManager; +import nl.devpieter.utilize.client.task.TaskManager; +import nl.devpieter.utilize.client.task.enums.TickPhase; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ClientPlayerEntity.class) -public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity { +@Mixin(LocalPlayer.class) +public abstract class LocalPlayerMixin extends AbstractClientPlayer { @Unique private final Sees sees = Sees.getSharedInstance(); @@ -27,20 +28,20 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity @Unique private final TaskManager taskManager = TaskManager.getInstance(); - public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile) { - super(world, profile); + public LocalPlayerMixin(ClientLevel level, GameProfile gameProfile) { + super(level, gameProfile); } @Inject(at = @At("HEAD"), method = "tick") private void onTick(CallbackInfo ci) { - taskManager.tick(TaskManager.TickPhase.PLAYER_HEAD); + taskManager.tick(TickPhase.PLAYER_HEAD); sees.dispatch(new ClientPlayerTickEvent()); } @Inject(at = @At("TAIL"), method = "tick") private void onTickTail(CallbackInfo ci) { damageManager.tick(getHealth()); - taskManager.tick(TaskManager.TickPhase.PLAYER_TAIL); + taskManager.tick(TickPhase.PLAYER_TAIL); sees.dispatch(new ClientPlayerTickTailEvent()); } diff --git a/src/main/java/nl/devpieter/utilize/mixins/MinecraftClientMixin.java b/src/client/java/nl/devpieter/utilize/client/mixin/MinecraftMixin.java similarity index 53% rename from src/main/java/nl/devpieter/utilize/mixins/MinecraftClientMixin.java rename to src/client/java/nl/devpieter/utilize/client/mixin/MinecraftMixin.java index f9c26cd..64f87ce 100644 --- a/src/main/java/nl/devpieter/utilize/mixins/MinecraftClientMixin.java +++ b/src/client/java/nl/devpieter/utilize/client/mixin/MinecraftMixin.java @@ -1,31 +1,21 @@ -package nl.devpieter.utilize.mixins; +package nl.devpieter.utilize.client.mixin; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.Minecraft; import nl.devpieter.sees.Sees; import nl.devpieter.utilize.Utilize; -import nl.devpieter.utilize.events.screen.ScreenChangedEvent; -import nl.devpieter.utilize.events.tick.ClientTickEvent; -import nl.devpieter.utilize.events.tick.ClientTickTailEvent; -import nl.devpieter.utilize.setting.SettingManager; -import nl.devpieter.utilize.task.TaskManager; -import org.jetbrains.annotations.Nullable; +import nl.devpieter.utilize.client.events.tick.ClientTickEvent; +import nl.devpieter.utilize.client.events.tick.ClientTickTailEvent; +import nl.devpieter.utilize.client.setting.SettingManager; +import nl.devpieter.utilize.client.task.TaskManager; +import nl.devpieter.utilize.client.task.enums.TickPhase; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(MinecraftClient.class) -public class MinecraftClientMixin { - - @Shadow - @Nullable - public Screen currentScreen; - - @Unique - private Screen previousScreen; +@Mixin(Minecraft.class) +public class MinecraftMixin { @Unique private final Sees sees = Sees.getSharedInstance(); @@ -36,23 +26,13 @@ public class MinecraftClientMixin { @Unique private TaskManager taskManager; - @Inject(at = @At("HEAD"), method = "setScreen") - private void onSetScreenHead(Screen screen, CallbackInfo ci) { - previousScreen = currentScreen; - } - - @Inject(at = @At("TAIL"), method = "setScreen") - private void onSetScreenTail(Screen screen, CallbackInfo ci) { - sees.dispatch(new ScreenChangedEvent(previousScreen, screen)); - } - @Inject(at = @At("HEAD"), method = "tick") private void onTick(CallbackInfo ci) { tryInitializeManagers(); if (taskManager != null) { taskManager.beginTick(); - taskManager.tick(TaskManager.TickPhase.CLIENT_HEAD); + taskManager.tick(TickPhase.CLIENT_HEAD); } sees.dispatch(new ClientTickEvent()); @@ -61,14 +41,14 @@ private void onTick(CallbackInfo ci) { @Inject(at = @At("TAIL"), method = "tick") private void onTickTail(CallbackInfo ci) { if (settingManager != null) settingManager.tick(); - if (taskManager != null) taskManager.tick(TaskManager.TickPhase.CLIENT_TAIL); + if (taskManager != null) taskManager.tick(TickPhase.CLIENT_TAIL); sees.dispatch(new ClientTickTailEvent()); } /** * We need to initialize the managers here because Utilize may not be fully initialized - * when MinecraftClient is being constructed, leading to potential null references. + * when Minecraft is being constructed, leading to potential null references. */ @Unique private void tryInitializeManagers() { diff --git a/src/main/java/nl/devpieter/utilize/setting/KeyedSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/KeyedSetting.java similarity index 55% rename from src/main/java/nl/devpieter/utilize/setting/KeyedSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/KeyedSetting.java index 2bf57e0..a97c4b4 100644 --- a/src/main/java/nl/devpieter/utilize/setting/KeyedSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/KeyedSetting.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.setting; +package nl.devpieter.utilize.client.setting; public record KeyedSetting(String key, T value) { } diff --git a/src/main/java/nl/devpieter/utilize/setting/SettingManager.java b/src/client/java/nl/devpieter/utilize/client/setting/SettingManager.java similarity index 98% rename from src/main/java/nl/devpieter/utilize/setting/SettingManager.java rename to src/client/java/nl/devpieter/utilize/client/setting/SettingManager.java index ad48d86..124c1ed 100644 --- a/src/main/java/nl/devpieter/utilize/setting/SettingManager.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/SettingManager.java @@ -1,9 +1,9 @@ -package nl.devpieter.utilize.setting; +package nl.devpieter.utilize.client.setting; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; -import nl.devpieter.utilize.setting.interfaces.ISetting; +import nl.devpieter.utilize.client.setting.interfaces.ISetting; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; diff --git a/src/main/java/nl/devpieter/utilize/setting/base/SettingBase.java b/src/client/java/nl/devpieter/utilize/client/setting/base/SettingBase.java similarity index 91% rename from src/main/java/nl/devpieter/utilize/setting/base/SettingBase.java rename to src/client/java/nl/devpieter/utilize/client/setting/base/SettingBase.java index c36ddae..68fd7b8 100644 --- a/src/main/java/nl/devpieter/utilize/setting/base/SettingBase.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/base/SettingBase.java @@ -1,6 +1,6 @@ -package nl.devpieter.utilize.setting.base; +package nl.devpieter.utilize.client.setting.base; -import nl.devpieter.utilize.setting.interfaces.ISetting; +import nl.devpieter.utilize.client.setting.interfaces.ISetting; import org.jetbrains.annotations.NotNull; public abstract class SettingBase implements ISetting { diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/IBooleanSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IBooleanSetting.java similarity index 81% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/IBooleanSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/IBooleanSetting.java index 0db22e5..ef442fd 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/IBooleanSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IBooleanSetting.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; import java.lang.reflect.Type; diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/IListSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IListSetting.java similarity index 82% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/IListSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/IListSetting.java index 38b013e..e74102e 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/IListSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IListSetting.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; import java.util.List; diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/IMapSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IMapSetting.java similarity index 81% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/IMapSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/IMapSetting.java index 5ecc667..1ae71a9 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/IMapSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IMapSetting.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; import java.util.Map; diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/INumberSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/INumberSetting.java similarity index 76% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/INumberSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/INumberSetting.java index 2e2fbe1..2f47452 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/INumberSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/INumberSetting.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; public interface INumberSetting extends ISetting { diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/IPolymorphicSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IPolymorphicSetting.java similarity index 69% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/IPolymorphicSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/IPolymorphicSetting.java index 66267bc..8a0af20 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/IPolymorphicSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IPolymorphicSetting.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; import com.google.common.reflect.TypeToken; -import nl.devpieter.utilize.models.PolymorphicValue; +import nl.devpieter.utilize.client.setting.models.PolymorphicValue; import java.lang.reflect.Type; diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/ISetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/ISetting.java similarity index 85% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/ISetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/ISetting.java index e7d5d11..2d390c2 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/ISetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/ISetting.java @@ -1,6 +1,6 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; -import nl.devpieter.utilize.setting.KeyedSetting; +import nl.devpieter.utilize.client.setting.KeyedSetting; import java.lang.reflect.Type; diff --git a/src/main/java/nl/devpieter/utilize/setting/interfaces/IStringSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IStringSetting.java similarity index 75% rename from src/main/java/nl/devpieter/utilize/setting/interfaces/IStringSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/interfaces/IStringSetting.java index 4c04b67..6883bd1 100644 --- a/src/main/java/nl/devpieter/utilize/setting/interfaces/IStringSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/interfaces/IStringSetting.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.setting.interfaces; +package nl.devpieter.utilize.client.setting.interfaces; import java.lang.reflect.Type; diff --git a/src/main/java/nl/devpieter/utilize/models/PolymorphicValue.java b/src/client/java/nl/devpieter/utilize/client/setting/models/PolymorphicValue.java similarity index 94% rename from src/main/java/nl/devpieter/utilize/models/PolymorphicValue.java rename to src/client/java/nl/devpieter/utilize/client/setting/models/PolymorphicValue.java index 755b600..01cd37c 100644 --- a/src/main/java/nl/devpieter/utilize/models/PolymorphicValue.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/models/PolymorphicValue.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.models; +package nl.devpieter.utilize.client.setting.models; import com.google.gson.Gson; import com.google.gson.JsonElement; diff --git a/src/main/java/nl/devpieter/utilize/setting/settings/BooleanSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/settings/BooleanSetting.java similarity index 80% rename from src/main/java/nl/devpieter/utilize/setting/settings/BooleanSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/settings/BooleanSetting.java index 4ef0a54..dccd389 100644 --- a/src/main/java/nl/devpieter/utilize/setting/settings/BooleanSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/settings/BooleanSetting.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.setting.settings; +package nl.devpieter.utilize.client.setting.settings; -import nl.devpieter.utilize.setting.base.SettingBase; -import nl.devpieter.utilize.setting.interfaces.IBooleanSetting; +import nl.devpieter.utilize.client.setting.base.SettingBase; +import nl.devpieter.utilize.client.setting.interfaces.IBooleanSetting; import org.jetbrains.annotations.NotNull; public class BooleanSetting extends SettingBase implements IBooleanSetting { diff --git a/src/main/java/nl/devpieter/utilize/setting/settings/FloatSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/settings/FloatSetting.java similarity index 89% rename from src/main/java/nl/devpieter/utilize/setting/settings/FloatSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/settings/FloatSetting.java index e974858..1906a11 100644 --- a/src/main/java/nl/devpieter/utilize/setting/settings/FloatSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/settings/FloatSetting.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.setting.settings; +package nl.devpieter.utilize.client.setting.settings; -import nl.devpieter.utilize.setting.base.SettingBase; -import nl.devpieter.utilize.setting.interfaces.INumberSetting; +import nl.devpieter.utilize.client.setting.base.SettingBase; +import nl.devpieter.utilize.client.setting.interfaces.INumberSetting; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/nl/devpieter/utilize/setting/settings/IntSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/settings/IntSetting.java similarity index 89% rename from src/main/java/nl/devpieter/utilize/setting/settings/IntSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/settings/IntSetting.java index a7a93b7..195b07e 100644 --- a/src/main/java/nl/devpieter/utilize/setting/settings/IntSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/settings/IntSetting.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.setting.settings; +package nl.devpieter.utilize.client.setting.settings; -import nl.devpieter.utilize.setting.base.SettingBase; -import nl.devpieter.utilize.setting.interfaces.INumberSetting; +import nl.devpieter.utilize.client.setting.base.SettingBase; +import nl.devpieter.utilize.client.setting.interfaces.INumberSetting; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/nl/devpieter/utilize/setting/settings/ListSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/settings/ListSetting.java similarity index 92% rename from src/main/java/nl/devpieter/utilize/setting/settings/ListSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/settings/ListSetting.java index e939954..d774cb9 100644 --- a/src/main/java/nl/devpieter/utilize/setting/settings/ListSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/settings/ListSetting.java @@ -1,8 +1,8 @@ -package nl.devpieter.utilize.setting.settings; +package nl.devpieter.utilize.client.setting.settings; import com.google.common.reflect.TypeToken; -import nl.devpieter.utilize.setting.base.SettingBase; -import nl.devpieter.utilize.setting.interfaces.IListSetting; +import nl.devpieter.utilize.client.setting.base.SettingBase; +import nl.devpieter.utilize.client.setting.interfaces.IListSetting; import java.lang.reflect.Type; import java.util.List; diff --git a/src/main/java/nl/devpieter/utilize/setting/settings/MapSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/settings/MapSetting.java similarity index 90% rename from src/main/java/nl/devpieter/utilize/setting/settings/MapSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/settings/MapSetting.java index cd498c8..e8b3d2a 100644 --- a/src/main/java/nl/devpieter/utilize/setting/settings/MapSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/settings/MapSetting.java @@ -1,8 +1,8 @@ -package nl.devpieter.utilize.setting.settings; +package nl.devpieter.utilize.client.setting.settings; import com.google.common.reflect.TypeToken; -import nl.devpieter.utilize.setting.base.SettingBase; -import nl.devpieter.utilize.setting.interfaces.IMapSetting; +import nl.devpieter.utilize.client.setting.base.SettingBase; +import nl.devpieter.utilize.client.setting.interfaces.IMapSetting; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Type; diff --git a/src/main/java/nl/devpieter/utilize/setting/settings/StringSetting.java b/src/client/java/nl/devpieter/utilize/client/setting/settings/StringSetting.java similarity index 65% rename from src/main/java/nl/devpieter/utilize/setting/settings/StringSetting.java rename to src/client/java/nl/devpieter/utilize/client/setting/settings/StringSetting.java index c50f6c9..e6b157d 100644 --- a/src/main/java/nl/devpieter/utilize/setting/settings/StringSetting.java +++ b/src/client/java/nl/devpieter/utilize/client/setting/settings/StringSetting.java @@ -1,7 +1,7 @@ -package nl.devpieter.utilize.setting.settings; +package nl.devpieter.utilize.client.setting.settings; -import nl.devpieter.utilize.setting.base.SettingBase; -import nl.devpieter.utilize.setting.interfaces.IStringSetting; +import nl.devpieter.utilize.client.setting.base.SettingBase; +import nl.devpieter.utilize.client.setting.interfaces.IStringSetting; public class StringSetting extends SettingBase implements IStringSetting { diff --git a/src/client/java/nl/devpieter/utilize/client/task/ITask.java b/src/client/java/nl/devpieter/utilize/client/task/ITask.java new file mode 100644 index 0000000..c24bd25 --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/task/ITask.java @@ -0,0 +1,8 @@ +package nl.devpieter.utilize.client.task; + +import nl.devpieter.utilize.client.task.enums.TickResult; + +public interface ITask { + + TickResult tick(); +} diff --git a/src/client/java/nl/devpieter/utilize/client/task/TaskEntry.java b/src/client/java/nl/devpieter/utilize/client/task/TaskEntry.java new file mode 100644 index 0000000..0a362f0 --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/task/TaskEntry.java @@ -0,0 +1,6 @@ +package nl.devpieter.utilize.client.task; + +import nl.devpieter.utilize.client.task.enums.TickPhase; + +public record TaskEntry(ITask task, TickPhase phase) { +} diff --git a/src/main/java/nl/devpieter/utilize/task/TaskManager.java b/src/client/java/nl/devpieter/utilize/client/task/TaskManager.java similarity index 84% rename from src/main/java/nl/devpieter/utilize/task/TaskManager.java rename to src/client/java/nl/devpieter/utilize/client/task/TaskManager.java index 187f5b5..cbb7a1a 100644 --- a/src/main/java/nl/devpieter/utilize/task/TaskManager.java +++ b/src/client/java/nl/devpieter/utilize/client/task/TaskManager.java @@ -1,6 +1,7 @@ -package nl.devpieter.utilize.task; +package nl.devpieter.utilize.client.task; -import nl.devpieter.utilize.task.interfaces.ITask; +import nl.devpieter.utilize.client.task.enums.TickPhase; +import nl.devpieter.utilize.client.task.enums.TickResult; import java.util.ArrayList; import java.util.EnumMap; @@ -73,20 +74,4 @@ private void flushPendingTasks() { pendingTasks.clear(); } - - public enum TickPhase { - PLAYER_HEAD, - PLAYER_TAIL, - CLIENT_HEAD, - CLIENT_TAIL - } - - public enum TickResult { - CONTINUE, - FINISHED, - REQUEUE - } - - private record TaskEntry(ITask task, TickPhase phase) { - } } diff --git a/src/client/java/nl/devpieter/utilize/client/task/enums/TickPhase.java b/src/client/java/nl/devpieter/utilize/client/task/enums/TickPhase.java new file mode 100644 index 0000000..9f09c55 --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/task/enums/TickPhase.java @@ -0,0 +1,8 @@ +package nl.devpieter.utilize.client.task.enums; + +public enum TickPhase { + PLAYER_HEAD, + PLAYER_TAIL, + CLIENT_HEAD, + CLIENT_TAIL +} diff --git a/src/client/java/nl/devpieter/utilize/client/task/enums/TickResult.java b/src/client/java/nl/devpieter/utilize/client/task/enums/TickResult.java new file mode 100644 index 0000000..8862106 --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/task/enums/TickResult.java @@ -0,0 +1,7 @@ +package nl.devpieter.utilize.client.task.enums; + +public enum TickResult { + CONTINUE, + FINISHED, + REQUEUE +} diff --git a/src/main/java/nl/devpieter/utilize/task/tasks/RunLaterTask.java b/src/client/java/nl/devpieter/utilize/client/task/tasks/RunLaterTask.java similarity index 64% rename from src/main/java/nl/devpieter/utilize/task/tasks/RunLaterTask.java rename to src/client/java/nl/devpieter/utilize/client/task/tasks/RunLaterTask.java index e056da3..137e771 100644 --- a/src/main/java/nl/devpieter/utilize/task/tasks/RunLaterTask.java +++ b/src/client/java/nl/devpieter/utilize/client/task/tasks/RunLaterTask.java @@ -1,8 +1,8 @@ -package nl.devpieter.utilize.task.tasks; +package nl.devpieter.utilize.client.task.tasks; -import nl.devpieter.utilize.task.TaskManager; -import nl.devpieter.utilize.task.interfaces.ITask; -import nl.devpieter.utilize.utils.common.MathUtils; +import nl.devpieter.utilize.client.task.ITask; +import nl.devpieter.utilize.client.task.enums.TickResult; +import nl.devpieter.utilize.utils.MathUtils; import org.jetbrains.annotations.NotNull; import java.time.Duration; @@ -26,17 +26,17 @@ public RunLaterTask(@NotNull Runnable runnable, int startDelayTicks) { } @Override - public TaskManager.TickResult tick() { - if (finished) return TaskManager.TickResult.FINISHED; + public TickResult tick() { + if (finished) return TickResult.FINISHED; tickCounter++; if (tickCounter < startDelayTicks) { - return TaskManager.TickResult.CONTINUE; + return TickResult.CONTINUE; } runnable.run(); finished = true; - return TaskManager.TickResult.FINISHED; + return TickResult.FINISHED; } } diff --git a/src/client/java/nl/devpieter/utilize/client/utils/ClientUtils.java b/src/client/java/nl/devpieter/utilize/client/utils/ClientUtils.java new file mode 100644 index 0000000..7d32ef4 --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/utils/ClientUtils.java @@ -0,0 +1,27 @@ +package nl.devpieter.utilize.client.utils; + +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; + +public final class ClientUtils { + + private ClientUtils() { + } + + public static boolean isDevEnv() { + return FabricLoader.getInstance().isDevelopmentEnvironment(); + } + + public static Minecraft getClient() { + return Minecraft.getInstance(); + } + + public static boolean hasPlayer() { + return getClient().player != null; + } + + public static LocalPlayer getPlayer() { + return getClient().player; + } +} diff --git a/src/client/java/nl/devpieter/utilize/client/utils/PlayerUtils.java b/src/client/java/nl/devpieter/utilize/client/utils/PlayerUtils.java new file mode 100644 index 0000000..8b7b350 --- /dev/null +++ b/src/client/java/nl/devpieter/utilize/client/utils/PlayerUtils.java @@ -0,0 +1,23 @@ +package nl.devpieter.utilize.client.utils; + +import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.NotNull; + +public final class PlayerUtils { + + private PlayerUtils() { + } + + public static void sendMessage(@NotNull Component message, boolean overlay) { + if (overlay) sendOverlayMessage(message); + else sendSystemMessage(message); + } + + public static void sendOverlayMessage(@NotNull Component message) { + if (ClientUtils.hasPlayer()) ClientUtils.getPlayer().sendOverlayMessage(message); + } + + public static void sendSystemMessage(@NotNull Component message) { + if (ClientUtils.hasPlayer()) ClientUtils.getPlayer().sendSystemMessage(message); + } +} diff --git a/src/client/resources/utilize.client.mixins.json b/src/client/resources/utilize.client.mixins.json new file mode 100644 index 0000000..8838def --- /dev/null +++ b/src/client/resources/utilize.client.mixins.json @@ -0,0 +1,19 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "nl.devpieter.utilize.client.mixin", + "compatibilityLevel": "JAVA_25", + "client": [ + ], + "injectors": { + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true + }, + "mixins": [ + "KeyMappingMixin", + "LocalPlayerMixin", + "MinecraftMixin" + ] +} diff --git a/src/main/java/nl/devpieter/utilize/Utilize.java b/src/main/java/nl/devpieter/utilize/Utilize.java index 82a703a..1344a12 100644 --- a/src/main/java/nl/devpieter/utilize/Utilize.java +++ b/src/main/java/nl/devpieter/utilize/Utilize.java @@ -1,16 +1,13 @@ package nl.devpieter.utilize; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; +import net.fabricmc.api.ModInitializer; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.minecraft.SharedConstants; -import nl.devpieter.utilize.http.AsyncRequest; -import nl.devpieter.utilize.setting.SettingManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class Utilize implements ClientModInitializer { +public class Utilize implements ModInitializer { private static Utilize INSTANCE; @@ -20,16 +17,9 @@ public class Utilize implements ClientModInitializer { private boolean isInitialized; @Override - public void onInitializeClient() { + public void onInitialize() { INSTANCE = this; - ClientLifecycleEvents.CLIENT_STOPPING.register((client) -> { - logger.info("Shutting down Utilize..."); - - SettingManager.shutdown(); - AsyncRequest.shutdown(); - }); - logger.info("Utilize initialized successfully! Version: {}", getUtilizeVersion()); isInitialized = true; } @@ -71,7 +61,7 @@ public String getUtilizeVersion() { } public String getMinecraftVersion() { - return SharedConstants.getGameVersion().name(); + return SharedConstants.getCurrentVersion().name(); } /** diff --git a/src/main/java/nl/devpieter/utilize/events/chat/ReceiveMessageEvent.java b/src/main/java/nl/devpieter/utilize/events/chat/ReceiveMessageEvent.java deleted file mode 100644 index a4f2590..0000000 --- a/src/main/java/nl/devpieter/utilize/events/chat/ReceiveMessageEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package nl.devpieter.utilize.events.chat; - -import net.minecraft.text.Text; -import nl.devpieter.sees.event.SCancelableEventBase; -import nl.devpieter.sees.event.SReturnableEvent; - -public class ReceiveMessageEvent extends SCancelableEventBase implements SReturnableEvent { - - private Text message; - - public ReceiveMessageEvent(Text message) { - this.message = message; - } - - @Override - public Text getResult() { - return this.message; - } - - @Override - public void setResult(Text message) { - this.message = message; - } - - public Text message() { - return this.message; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/UpdateBlockBreakingProgressEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/UpdateBlockBreakingProgressEvent.java deleted file mode 100644 index 92df5c9..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/UpdateBlockBreakingProgressEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package nl.devpieter.utilize.events.interaction; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import nl.devpieter.sees.event.SCancelableEventBase; - -public class UpdateBlockBreakingProgressEvent extends SCancelableEventBase { - - private final BlockPos blockPos; - private final Direction direction; - - public UpdateBlockBreakingProgressEvent(BlockPos blockPos, Direction direction) { - this.blockPos = blockPos; - this.direction = direction; - } - - public BlockPos blockPos() { - return blockPos; - } - - public Direction direction() { - return direction; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockEvent.java deleted file mode 100644 index 955ef68..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import nl.devpieter.sees.event.SCancelableEventBase; - -/** - * It's not recommended to directly cancel this event, as it may cause issues with the game logic. - * Instead, use the {@link nl.devpieter.utilize.events.interaction.keybinding.AttackKeyPressedEvent} to directly cancel the attack action. - */ -public class AttackBlockEvent extends SCancelableEventBase { - - private final BlockPos blockPos; - private final Direction direction; - - public AttackBlockEvent(BlockPos blockPos, Direction direction) { - this.blockPos = blockPos; - this.direction = direction; - } - - public BlockPos blockPos() { - return this.blockPos; - } - - public Direction direction() { - return this.direction; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockReturnEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockReturnEvent.java deleted file mode 100644 index fb927f2..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockReturnEvent.java +++ /dev/null @@ -1,36 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import nl.devpieter.sees.event.SReturnableEvent; - -public class AttackBlockReturnEvent implements SReturnableEvent { - - private final BlockPos blockPos; - private final Direction direction; - private boolean returnValue; - - public AttackBlockReturnEvent(BlockPos blockPos, Direction direction, boolean returnValue) { - this.blockPos = blockPos; - this.direction = direction; - this.returnValue = returnValue; - } - - public BlockPos blockPos() { - return this.blockPos; - } - - public Direction direction() { - return this.direction; - } - - @Override - public Boolean getResult() { - return this.returnValue; - } - - @Override - public void setResult(Boolean result) { - this.returnValue = result; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockTailEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockTailEvent.java deleted file mode 100644 index 94f197d..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/AttackBlockTailEvent.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import nl.devpieter.sees.event.SEvent; - -public record AttackBlockTailEvent(BlockPos blockPos, Direction direction) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockEvent.java deleted file mode 100644 index deb8878..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.math.BlockPos; -import nl.devpieter.sees.event.SCancelableEventBase; - -/** - * It's not recommended to directly cancel this event, as it may cause issues with the game logic. - * Instead, use the {@link nl.devpieter.utilize.events.interaction.keybinding.AttackKeyPressedEvent} to directly cancel the attack action. - */ -public class BreakBlockEvent extends SCancelableEventBase { - - private final BlockPos blockPos; - - public BreakBlockEvent(BlockPos blockPos) { - this.blockPos = blockPos; - } - - public BlockPos blockPos() { - return this.blockPos; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockReturnEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockReturnEvent.java deleted file mode 100644 index 734c737..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockReturnEvent.java +++ /dev/null @@ -1,30 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.math.BlockPos; -import nl.devpieter.sees.event.SCancelableEventBase; -import nl.devpieter.sees.event.SReturnableEvent; - -public class BreakBlockReturnEvent implements SReturnableEvent { - - private final BlockPos blockPos; - private boolean returnValue; - - public BreakBlockReturnEvent(BlockPos blockPos, boolean returnValue) { - this.blockPos = blockPos; - this.returnValue = returnValue; - } - - public BlockPos blockPos() { - return this.blockPos; - } - - @Override - public Boolean getResult() { - return this.returnValue; - } - - @Override - public void setResult(Boolean result) { - this.returnValue = result; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockTailEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockTailEvent.java deleted file mode 100644 index 14ed4ad..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/BreakBlockTailEvent.java +++ /dev/null @@ -1,7 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.math.BlockPos; -import nl.devpieter.sees.event.SEvent; - -public record BreakBlockTailEvent(BlockPos blockPos) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockEvent.java deleted file mode 100644 index 99b35c9..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import nl.devpieter.sees.event.SCancelableEventBase; - -/** - * It's not recommended to directly cancel this event, as it may cause issues with the game logic. - * Instead, use the {@link nl.devpieter.utilize.events.interaction.keybinding.UseKeyPressedEvent} to directly cancel the use action. - */ -public class InteractBlockEvent extends SCancelableEventBase { - - private final Hand hand; - private final BlockHitResult hitResult; - - public InteractBlockEvent(Hand hand, BlockHitResult hitResult) { - this.hand = hand; - this.hitResult = hitResult; - } - - public Hand hand() { - return this.hand; - } - - public BlockHitResult hitResult() { - return this.hitResult; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockReturnEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockReturnEvent.java deleted file mode 100644 index 11fb675..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockReturnEvent.java +++ /dev/null @@ -1,37 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import nl.devpieter.sees.event.SReturnableEvent; - -public class InteractBlockReturnEvent implements SReturnableEvent { - - private final Hand hand; - private final BlockHitResult hitResult; - private ActionResult returnValue; - - public InteractBlockReturnEvent(Hand hand, BlockHitResult hitResult, ActionResult returnValue) { - this.hand = hand; - this.hitResult = hitResult; - this.returnValue = returnValue; - } - - public Hand hand() { - return this.hand; - } - - public BlockHitResult hitResult() { - return this.hitResult; - } - - @Override - public ActionResult getResult() { - return this.returnValue; - } - - @Override - public void setResult(ActionResult result) { - this.returnValue = result; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockTailEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockTailEvent.java deleted file mode 100644 index f4d9e50..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/block/InteractBlockTailEvent.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.events.interaction.block; - -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import nl.devpieter.sees.event.SEvent; - -public record InteractBlockTailEvent(Hand hand, BlockHitResult hitResult) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityEvent.java deleted file mode 100644 index 825da1b..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package nl.devpieter.utilize.events.interaction.entity; - -import net.minecraft.entity.Entity; -import nl.devpieter.sees.event.SCancelableEventBase; - -/** - * It's not recommended to directly cancel this event, as it may cause issues with the game logic. - * Instead, use the {@link nl.devpieter.utilize.events.interaction.keybinding.AttackKeyPressedEvent} to directly cancel the attack action. - */ -public class AttackEntityEvent extends SCancelableEventBase { - - private final Entity target; - - public AttackEntityEvent(Entity target) { - this.target = target; - } - - public Entity target() { - return this.target; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityReturnEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityReturnEvent.java deleted file mode 100644 index 28a343a..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityReturnEvent.java +++ /dev/null @@ -1,7 +0,0 @@ -package nl.devpieter.utilize.events.interaction.entity; - -import net.minecraft.entity.Entity; -import nl.devpieter.sees.event.SEvent; - -public record AttackEntityReturnEvent(Entity target) implements SEvent { -} \ No newline at end of file diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityTailEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityTailEvent.java deleted file mode 100644 index de30110..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/entity/AttackEntityTailEvent.java +++ /dev/null @@ -1,7 +0,0 @@ -package nl.devpieter.utilize.events.interaction.entity; - -import net.minecraft.entity.Entity; -import nl.devpieter.sees.event.SEvent; - -public record AttackEntityTailEvent(Entity target) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityEvent.java deleted file mode 100644 index dbe3b83..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package nl.devpieter.utilize.events.interaction.entity; - -import net.minecraft.entity.Entity; -import net.minecraft.util.Hand; -import nl.devpieter.sees.event.SCancelableEventBase; - -/** - * It's not recommended to directly cancel this event, as it may cause issues with the game logic. - * Instead, use the {@link nl.devpieter.utilize.events.interaction.keybinding.UseKeyPressedEvent} to directly cancel the use action. - */ -public class InteractEntityEvent extends SCancelableEventBase { - - private final Entity target; - private final Hand hand; - - public InteractEntityEvent(Entity target, Hand hand) { - this.hand = hand; - this.target = target; - } - - public Entity target() { - return this.target; - } - - public Hand hand() { - return this.hand; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityReturnEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityReturnEvent.java deleted file mode 100644 index c02028c..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityReturnEvent.java +++ /dev/null @@ -1,37 +0,0 @@ -package nl.devpieter.utilize.events.interaction.entity; - -import net.minecraft.entity.Entity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import nl.devpieter.sees.event.SReturnableEvent; - -public class InteractEntityReturnEvent implements SReturnableEvent { - - private final Entity target; - private final Hand hand; - private ActionResult returnValue; - - public InteractEntityReturnEvent(Entity target, Hand hand, ActionResult returnValue) { - this.target = target; - this.hand = hand; - this.returnValue = returnValue; - } - - public Entity target() { - return this.target; - } - - public Hand hand() { - return this.hand; - } - - @Override - public ActionResult getResult() { - return this.returnValue; - } - - @Override - public void setResult(ActionResult result) { - this.returnValue = result; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityTailEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityTailEvent.java deleted file mode 100644 index 823dec8..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/entity/InteractEntityTailEvent.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.events.interaction.entity; - -import net.minecraft.entity.Entity; -import net.minecraft.util.Hand; -import nl.devpieter.sees.event.SEvent; - -public record InteractEntityTailEvent(Entity target, Hand hand) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemEvent.java deleted file mode 100644 index fb8af87..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package nl.devpieter.utilize.events.interaction.item; - -import net.minecraft.util.Hand; -import nl.devpieter.sees.event.SCancelableEventBase; - -/** - * It's not recommended to directly cancel this event, as it may cause issues with the game logic. - * Instead, use the {@link nl.devpieter.utilize.events.interaction.keybinding.UseKeyPressedEvent} to directly cancel the use action. - */ -public class InteractItemEvent extends SCancelableEventBase { - - private final Hand hand; - - public InteractItemEvent(Hand hand) { - this.hand = hand; - } - - public Hand hand() { - return this.hand; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemReturnEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemReturnEvent.java deleted file mode 100644 index 22d8bbe..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemReturnEvent.java +++ /dev/null @@ -1,30 +0,0 @@ -package nl.devpieter.utilize.events.interaction.item; - -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import nl.devpieter.sees.event.SReturnableEvent; - -public class InteractItemReturnEvent implements SReturnableEvent { - - private final Hand hand; - private ActionResult returnValue; - - public InteractItemReturnEvent(Hand hand, ActionResult returnValue) { - this.hand = hand; - this.returnValue = returnValue; - } - - public Hand hand() { - return this.hand; - } - - @Override - public ActionResult getResult() { - return this.returnValue; - } - - @Override - public void setResult(ActionResult result) { - this.returnValue = result; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemTailEvent.java b/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemTailEvent.java deleted file mode 100644 index 913bd5c..0000000 --- a/src/main/java/nl/devpieter/utilize/events/interaction/item/InteractItemTailEvent.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.events.interaction.item; - -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import nl.devpieter.sees.event.SEvent; - -public record InteractItemTailEvent(Hand hand) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/inventory/HotbarSlotChangedEvent.java b/src/main/java/nl/devpieter/utilize/events/inventory/HotbarSlotChangedEvent.java deleted file mode 100644 index a8e5963..0000000 --- a/src/main/java/nl/devpieter/utilize/events/inventory/HotbarSlotChangedEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package nl.devpieter.utilize.events.inventory; - -import nl.devpieter.sees.event.SEvent; - -public record HotbarSlotChangedEvent(int previous, int current) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/events/inventory/SlotClickEvent.java b/src/main/java/nl/devpieter/utilize/events/inventory/SlotClickEvent.java deleted file mode 100644 index 43d3fdf..0000000 --- a/src/main/java/nl/devpieter/utilize/events/inventory/SlotClickEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -package nl.devpieter.utilize.events.inventory; - -import net.minecraft.screen.slot.SlotActionType; -import nl.devpieter.sees.event.SCancelableEventBase; - -public class SlotClickEvent extends SCancelableEventBase { - - private final int syncId; - private final int slotId; - private final int button; - private final SlotActionType actionType; - - public SlotClickEvent(int syncId, int slotId, int button, SlotActionType actionType) { - this.syncId = syncId; - this.slotId = slotId; - this.button = button; - this.actionType = actionType; - } - - public int syncId() { - return syncId; - } - - public int slotId() { - return slotId; - } - - public int button() { - return button; - } - - public SlotActionType actionType() { - return actionType; - } -} diff --git a/src/main/java/nl/devpieter/utilize/events/screen/ScreenChangedEvent.java b/src/main/java/nl/devpieter/utilize/events/screen/ScreenChangedEvent.java deleted file mode 100644 index bf842e3..0000000 --- a/src/main/java/nl/devpieter/utilize/events/screen/ScreenChangedEvent.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.events.screen; - -import net.minecraft.client.gui.screen.Screen; -import nl.devpieter.sees.event.SEvent; -import org.jetbrains.annotations.Nullable; - -public record ScreenChangedEvent(@Nullable Screen previous, @Nullable Screen current) implements SEvent { -} diff --git a/src/main/java/nl/devpieter/utilize/http/AsyncRequest.java b/src/main/java/nl/devpieter/utilize/http/AsyncRequest.java deleted file mode 100644 index f8b74a5..0000000 --- a/src/main/java/nl/devpieter/utilize/http/AsyncRequest.java +++ /dev/null @@ -1,80 +0,0 @@ -package nl.devpieter.utilize.http; - -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.*; - -public abstract class AsyncRequest extends RequestHelper { - - private static final ExecutorService EXECUTOR_SERVICE = Executors.newCachedThreadPool(); - - private final List> callbacks = new ArrayList<>(); - private CompletableFuture future; - - protected abstract @Nullable T requestAsync() throws Exception; - - public AsyncRequest() { - this(null); - } - - public AsyncRequest(@Nullable ResultConsumer requestCallback) { - if (requestCallback == null) return; - callbacks.add(requestCallback); - } - - public static void shutdown() { - EXECUTOR_SERVICE.shutdown(); - - try { - if (EXECUTOR_SERVICE.awaitTermination(5, TimeUnit.SECONDS)) return; - EXECUTOR_SERVICE.shutdownNow(); - } catch (InterruptedException e) { - EXECUTOR_SERVICE.shutdownNow(); - Thread.currentThread().interrupt(); - } - } - - public void addCallback(@Nullable ResultConsumer callback) { - if (callback == null) return; - callbacks.add(callback); - } - - public void execute() { - if (future != null) return; - - future = CompletableFuture.supplyAsync(() -> { - try { - T result = requestAsync(); - callCallbacks(result, null); - return result; - } catch (Exception e) { - callCallbacks(null, e); - throw new RuntimeException(e); - } - }, EXECUTOR_SERVICE); - } - - public void cancel() { - future.cancel(true); - } - - public boolean isDone() { - return future.isDone(); - } - - public T get() throws ExecutionException, InterruptedException { - return future.get(); - } - - public CompletableFuture getFuture() { - return future; - } - - private void callCallbacks(@Nullable T result, @Nullable Exception exception) { - for (ResultConsumer callback : callbacks) { - if (callback != null) callback.accept(result, exception); - } - } -} \ No newline at end of file diff --git a/src/main/java/nl/devpieter/utilize/http/RequestHelper.java b/src/main/java/nl/devpieter/utilize/http/RequestHelper.java deleted file mode 100644 index 58340a4..0000000 --- a/src/main/java/nl/devpieter/utilize/http/RequestHelper.java +++ /dev/null @@ -1,52 +0,0 @@ -package nl.devpieter.utilize.http; - -import nl.devpieter.utilize.Utilize; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; - -public abstract class RequestHelper { - - public static final String USER_AGENT_HEADER = "User-Agent"; - - protected static final HttpClient CLIENT = HttpClient.newHttpClient(); - - public static @NotNull HttpResponse simpleGet(@NotNull URI uri) throws IOException, InterruptedException { - HttpRequest request = createRequestBuilder(uri).GET().build(); - return CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); - } - - public static @NotNull HttpResponse simplePost(@NotNull URI uri, @NotNull HttpRequest.BodyPublisher bodyPublisher) throws IOException, InterruptedException { - HttpRequest request = createRequestBuilder(uri).POST(bodyPublisher).build(); - return CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); - } - - public static @NotNull HttpResponse simplePut(@NotNull URI uri, @NotNull HttpRequest.BodyPublisher bodyPublisher) throws IOException, InterruptedException { - HttpRequest request = createRequestBuilder(uri).PUT(bodyPublisher).build(); - return CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); - } - - public static @NotNull HttpResponse simpleDelete(@NotNull URI uri) throws IOException, InterruptedException { - HttpRequest request = createRequestBuilder(uri).DELETE().build(); - return CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); - } - - public static HttpRequest.Builder createRequestBuilder(@NotNull URI uri) { - return createRequestBuilder(uri, Utilize.getInstance().getUserAgent()); - } - - /** - * @see Utilize#getUserAgent(String, String) - */ - public static HttpRequest.Builder createRequestBuilder(@NotNull URI uri, @NotNull String userAgent) { - return HttpRequest.newBuilder() - .header(USER_AGENT_HEADER, userAgent) - .header("Content-Type", "application/json") - .header("Accept", "application/json") - .uri(uri); - } -} \ No newline at end of file diff --git a/src/main/java/nl/devpieter/utilize/http/ResultConsumer.java b/src/main/java/nl/devpieter/utilize/http/ResultConsumer.java deleted file mode 100644 index f0e2799..0000000 --- a/src/main/java/nl/devpieter/utilize/http/ResultConsumer.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.http; - -import org.jetbrains.annotations.Nullable; - -public interface ResultConsumer { - - void accept(@Nullable T result, @Nullable Exception exception); -} \ No newline at end of file diff --git a/src/main/java/nl/devpieter/utilize/managers/PacketManager.java b/src/main/java/nl/devpieter/utilize/managers/PacketManager.java index 040b2e8..ee46585 100644 --- a/src/main/java/nl/devpieter/utilize/managers/PacketManager.java +++ b/src/main/java/nl/devpieter/utilize/managers/PacketManager.java @@ -1,7 +1,7 @@ package nl.devpieter.utilize.managers; -import net.minecraft.network.packet.Packet; -import nl.devpieter.utilize.listeners.packet.IPacketListener; +import net.minecraft.network.protocol.Packet; +import nl.devpieter.utilize.packet.IPacketListener; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/nl/devpieter/utilize/mixins/ClientConnectionMixin.java b/src/main/java/nl/devpieter/utilize/mixin/ConnectionMixin.java similarity index 65% rename from src/main/java/nl/devpieter/utilize/mixins/ClientConnectionMixin.java rename to src/main/java/nl/devpieter/utilize/mixin/ConnectionMixin.java index ac769a5..d3ff27d 100644 --- a/src/main/java/nl/devpieter/utilize/mixins/ClientConnectionMixin.java +++ b/src/main/java/nl/devpieter/utilize/mixin/ConnectionMixin.java @@ -1,8 +1,8 @@ -package nl.devpieter.utilize.mixins; +package nl.devpieter.utilize.mixin; -import net.minecraft.network.ClientConnection; -import net.minecraft.network.listener.PacketListener; -import net.minecraft.network.packet.Packet; +import net.minecraft.network.Connection; +import net.minecraft.network.PacketListener; +import net.minecraft.network.protocol.Packet; import nl.devpieter.utilize.managers.PacketManager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -10,13 +10,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ClientConnection.class) -public class ClientConnectionMixin { +@Mixin(Connection.class) +public class ConnectionMixin { @Unique private static final PacketManager packetManager = PacketManager.getInstance(); - @Inject(at = @At("HEAD"), method = "handlePacket", cancellable = true) + @Inject(at = @At("HEAD"), method = "genericsFtw", cancellable = true) private static void onHandlePacket(Packet packet, PacketListener listener, CallbackInfo ci) { if (packetManager.packetReceived(packet)) ci.cancel(); } diff --git a/src/main/java/nl/devpieter/utilize/mixins/ChatHudMixin.java b/src/main/java/nl/devpieter/utilize/mixins/ChatHudMixin.java deleted file mode 100644 index 8c85c2e..0000000 --- a/src/main/java/nl/devpieter/utilize/mixins/ChatHudMixin.java +++ /dev/null @@ -1,56 +0,0 @@ -package nl.devpieter.utilize.mixins; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.hud.ChatHud; -import net.minecraft.client.gui.hud.ChatHudLine; -import net.minecraft.client.gui.hud.MessageIndicator; -import net.minecraft.network.message.MessageSignatureData; -import net.minecraft.text.Text; -import nl.devpieter.sees.Sees; -import nl.devpieter.utilize.events.chat.ReceiveMessageEvent; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ChatHud.class) -public abstract class ChatHudMixin { - - @Shadow - @Final - private MinecraftClient client; - - @Shadow - protected abstract void logChatMessage(ChatHudLine message); - - @Shadow - protected abstract void addVisibleMessage(ChatHudLine message); - - @Shadow - protected abstract void addMessage(ChatHudLine message); - - @Unique - private final Sees sees = Sees.getSharedInstance(); - - @Inject(at = @At("HEAD"), method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", cancellable = true) - public void onAddMessage(Text message, MessageSignatureData signatureData, MessageIndicator indicator, CallbackInfo ci) { - ReceiveMessageEvent event = new ReceiveMessageEvent(message); // rename to ChatHudMessageAddEvent, or something similar - Text result = sees.dispatchWithResult(event); - - if (event.isCancelled()) { - ci.cancel(); - return; - } - - // TODO - Optimize - ChatHudLine chatHudLine = new ChatHudLine(client.inGameHud.getTicks(), result, signatureData, indicator); - logChatMessage(chatHudLine); - addVisibleMessage(chatHudLine); - addMessage(chatHudLine); - - ci.cancel(); - } -} diff --git a/src/main/java/nl/devpieter/utilize/mixins/ClientPlayerInteractionManagerMixin.java b/src/main/java/nl/devpieter/utilize/mixins/ClientPlayerInteractionManagerMixin.java deleted file mode 100644 index 0754270..0000000 --- a/src/main/java/nl/devpieter/utilize/mixins/ClientPlayerInteractionManagerMixin.java +++ /dev/null @@ -1,173 +0,0 @@ -package nl.devpieter.utilize.mixins; - -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import nl.devpieter.sees.Sees; -import nl.devpieter.utilize.events.interaction.UpdateBlockBreakingProgressEvent; -import nl.devpieter.utilize.events.interaction.block.*; -import nl.devpieter.utilize.events.interaction.entity.*; -import nl.devpieter.utilize.events.interaction.item.InteractItemEvent; -import nl.devpieter.utilize.events.interaction.item.InteractItemReturnEvent; -import nl.devpieter.utilize.events.interaction.item.InteractItemTailEvent; -import nl.devpieter.utilize.events.inventory.HotbarSlotChangedEvent; -import nl.devpieter.utilize.events.inventory.SlotClickEvent; -import nl.devpieter.utilize.utils.minecraft.InventoryUtils; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ClientPlayerInteractionManager.class) -public abstract class ClientPlayerInteractionManagerMixin { - - @Shadow - public abstract void cancelBlockBreaking(); - - @Unique - private int lastSelectedHotbarSlot = -1; - - @Unique - private final Sees sees = Sees.getSharedInstance(); - - @Inject(at = @At("HEAD"), method = "updateBlockBreakingProgress", cancellable = true) - private void onUpdateBlockBreakingProgress(BlockPos pos, Direction direction, CallbackInfoReturnable cir) { - if (!sees.dispatch(new UpdateBlockBreakingProgressEvent(pos, direction))) return; - - // TODO - Make not cancelable? - - cancelBlockBreaking(); - cir.setReturnValue(false); - } - - @Inject(at = @At("HEAD"), method = "attackBlock", cancellable = true) - private void onAttackBlock(BlockPos pos, Direction direction, CallbackInfoReturnable cir) { - if (!sees.dispatch(new AttackBlockEvent(pos, direction))) return; - - cancelBlockBreaking(); - cir.setReturnValue(false); - } - - @Inject(at = @At("RETURN"), method = "attackBlock", cancellable = true) - private void onAttackBlockReturn(BlockPos pos, Direction direction, CallbackInfoReturnable cir) { - cir.setReturnValue(sees.dispatchWithResult(new AttackBlockReturnEvent(pos, direction, cir.getReturnValue()))); - } - - @Inject(at = @At("TAIL"), method = "attackBlock") - private void onAttackBlockTail(BlockPos pos, Direction direction, CallbackInfoReturnable cir) { - sees.dispatch(new AttackBlockTailEvent(pos, direction)); - } - - @Inject(at = @At("HEAD"), method = "breakBlock", cancellable = true) - private void onBreakBlock(BlockPos pos, CallbackInfoReturnable cir) { - if (!sees.dispatch(new BreakBlockEvent(pos))) return; - - cancelBlockBreaking(); - cir.setReturnValue(false); - } - - @Inject(at = @At("RETURN"), method = "breakBlock", cancellable = true) - private void onBreakBlockReturn(BlockPos pos, CallbackInfoReturnable cir) { - cir.setReturnValue(sees.dispatchWithResult(new BreakBlockReturnEvent(pos, cir.getReturnValue()))); - } - - @Inject(at = @At("TAIL"), method = "breakBlock") - private void onBreakBlockTail(BlockPos pos, CallbackInfoReturnable cir) { - sees.dispatch(new BreakBlockTailEvent(pos)); - } - - @Inject(at = @At("HEAD"), method = "interactBlock", cancellable = true) - private void onInteractBlock(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { - if (!sees.dispatch(new InteractBlockEvent(hand, hitResult))) return; - cir.setReturnValue(ActionResult.FAIL); - } - - @Inject(at = @At("RETURN"), method = "interactBlock", cancellable = true) - private void onInteractBlockReturn(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { - cir.setReturnValue(sees.dispatchWithResult(new InteractBlockReturnEvent(hand, hitResult, cir.getReturnValue()))); - } - - @Inject(at = @At("TAIL"), method = "interactBlock") - private void onInteractBlockTail(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { - sees.dispatch(new InteractBlockTailEvent(hand, hitResult)); - } - - @Inject(at = @At("HEAD"), method = "interactItem", cancellable = true) - private void onInteractItem(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { - if (!sees.dispatch(new InteractItemEvent(hand))) return; - cir.setReturnValue(ActionResult.FAIL); - } - - @Inject(at = @At("RETURN"), method = "interactItem", cancellable = true) - private void onInteractItemReturn(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { - cir.setReturnValue(sees.dispatchWithResult(new InteractItemReturnEvent(hand, cir.getReturnValue()))); - } - - @Inject(at = @At("TAIL"), method = "interactItem") - private void onInteractItemTail(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { - sees.dispatch(new InteractItemTailEvent(hand)); - } - - @Inject(at = @At("HEAD"), method = "attackEntity", cancellable = true) - private void onAttackEntity(PlayerEntity player, Entity target, CallbackInfo ci) { - if (!sees.dispatch(new AttackEntityEvent(target))) return; - ci.cancel(); - } - - @Inject(at = @At("RETURN"), method = "attackEntity") - private void onAttackEntityReturn(PlayerEntity player, Entity target, CallbackInfo ci) { - sees.dispatch(new AttackEntityReturnEvent(target)); - } - - @Inject(at = @At("TAIL"), method = "attackEntity") - private void onAttackEntityTail(PlayerEntity player, Entity target, CallbackInfo ci) { - sees.dispatch(new AttackEntityTailEvent(target)); - } - - @Inject(at = @At("HEAD"), method = "interactEntity", cancellable = true) - private void onInteractEntity(PlayerEntity player, Entity target, Hand hand, CallbackInfoReturnable cir) { - if (!sees.dispatch(new InteractEntityEvent(target, hand))) return; - cir.setReturnValue(ActionResult.FAIL); - } - - @Inject(at = @At("RETURN"), method = "interactEntity", cancellable = true) - private void onInteractEntityReturn(PlayerEntity player, Entity target, Hand hand, CallbackInfoReturnable cir) { - cir.setReturnValue(sees.dispatchWithResult(new InteractEntityReturnEvent(target, hand, cir.getReturnValue()))); - } - - @Inject(at = @At("TAIL"), method = "interactEntity") - private void onInteractEntityTail(PlayerEntity player, Entity target, Hand hand, CallbackInfoReturnable cir) { - sees.dispatch(new InteractEntityTailEvent(target, hand)); - } - - @Inject(at = @At("HEAD"), method = "clickSlot", cancellable = true) - private void onClickSlot(int syncId, int slotId, int button, SlotActionType actionType, PlayerEntity player, CallbackInfo ci) { - if (!sees.dispatch(new SlotClickEvent(syncId, slotId, button, actionType))) return; - ci.cancel(); - } - - @Inject(at = @At("TAIL"), method = "syncSelectedSlot") - private void onSyncSelectedSlot(CallbackInfo ci) { - int slot = InventoryUtils.getSelectedHotbarSlot(); - - if (lastSelectedHotbarSlot == -1) { - lastSelectedHotbarSlot = slot; - return; - } - - if (slot == lastSelectedHotbarSlot) return; - lastSelectedHotbarSlot = slot; - - sees.dispatch(new HotbarSlotChangedEvent(lastSelectedHotbarSlot, slot)); - } -} diff --git a/src/main/java/nl/devpieter/utilize/mixins/SeesMixin.java b/src/main/java/nl/devpieter/utilize/mixins/SeesMixin.java deleted file mode 100644 index d60e598..0000000 --- a/src/main/java/nl/devpieter/utilize/mixins/SeesMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -package nl.devpieter.utilize.mixins; - -import nl.devpieter.sees.Sees; -import nl.devpieter.sees.event.SEvent; -import nl.devpieter.utilize.events.interaction.keybinding.KeyBindingPressedCheckEvent; -import nl.devpieter.utilize.events.tick.ITickEvent; -import nl.devpieter.utilize.utils.minecraft.ClientUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(value = Sees.class, remap = false) -public class SeesMixin { - - @Unique - private final Logger logger = LoggerFactory.getLogger("Utilize/SeesMixin"); - -// @Inject( -// method = "dispatch(Lnl/devpieter/sees/event/SEvent;)Z", -// at = @At("RETURN") -// ) -// private void onDispatch(SEvent event, CallbackInfoReturnable cir) { -// if (event instanceof ITickEvent || event instanceof KeyBindingPressedCheckEvent) return; -// if (!ClientUtils.isDevEnv()) return; -// -// logger.info("Dispatched event: {} (canceled: {})", event.getClass().getSimpleName(), cir.getReturnValue()); -// } -} diff --git a/src/main/java/nl/devpieter/utilize/listeners/packet/IPacketListener.java b/src/main/java/nl/devpieter/utilize/packet/IPacketListener.java similarity index 62% rename from src/main/java/nl/devpieter/utilize/listeners/packet/IPacketListener.java rename to src/main/java/nl/devpieter/utilize/packet/IPacketListener.java index c875652..fd85236 100644 --- a/src/main/java/nl/devpieter/utilize/listeners/packet/IPacketListener.java +++ b/src/main/java/nl/devpieter/utilize/packet/IPacketListener.java @@ -1,6 +1,6 @@ -package nl.devpieter.utilize.listeners.packet; +package nl.devpieter.utilize.packet; -import net.minecraft.network.packet.Packet; +import net.minecraft.network.protocol.Packet; import java.lang.reflect.Type; diff --git a/src/main/java/nl/devpieter/utilize/task/interfaces/ITask.java b/src/main/java/nl/devpieter/utilize/task/interfaces/ITask.java deleted file mode 100644 index b2fd1a0..0000000 --- a/src/main/java/nl/devpieter/utilize/task/interfaces/ITask.java +++ /dev/null @@ -1,8 +0,0 @@ -package nl.devpieter.utilize.task.interfaces; - -import nl.devpieter.utilize.task.TaskManager; - -public interface ITask { - - TaskManager.TickResult tick(); -} diff --git a/src/main/java/nl/devpieter/utilize/utils/common/FileUtils.java b/src/main/java/nl/devpieter/utilize/utils/FileUtils.java similarity index 97% rename from src/main/java/nl/devpieter/utilize/utils/common/FileUtils.java rename to src/main/java/nl/devpieter/utilize/utils/FileUtils.java index 28131ad..5d727b8 100644 --- a/src/main/java/nl/devpieter/utilize/utils/common/FileUtils.java +++ b/src/main/java/nl/devpieter/utilize/utils/FileUtils.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.utils.common; +package nl.devpieter.utilize.utils; import java.io.File; diff --git a/src/main/java/nl/devpieter/utilize/utils/common/MathUtils.java b/src/main/java/nl/devpieter/utilize/utils/MathUtils.java similarity index 72% rename from src/main/java/nl/devpieter/utilize/utils/common/MathUtils.java rename to src/main/java/nl/devpieter/utilize/utils/MathUtils.java index a79bb51..18cbce1 100644 --- a/src/main/java/nl/devpieter/utilize/utils/common/MathUtils.java +++ b/src/main/java/nl/devpieter/utilize/utils/MathUtils.java @@ -1,9 +1,4 @@ -package nl.devpieter.utilize.utils.common; - -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.Vec3i; -import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.NotNull; +package nl.devpieter.utilize.utils; import java.time.Duration; @@ -24,16 +19,6 @@ public static int durationToTicks(Duration duration) { return (int) (duration.toMillis() / 50); } - @Contract("_ -> new") - public static @NotNull Vec3d from(@NotNull Vec3i vec3i) { - return new Vec3d(vec3i.getX(), vec3i.getY(), vec3i.getZ()); - } - - @Contract("_ -> new") - public static @NotNull Vec3i from(@NotNull Vec3d vec3d) { - return new Vec3i((int) vec3d.getX(), (int) vec3d.getY(), (int) vec3d.getZ()); - } - public static double notNegative(double value) { return Math.max(0, value); } diff --git a/src/main/java/nl/devpieter/utilize/utils/common/RandomUtils.java b/src/main/java/nl/devpieter/utilize/utils/RandomUtils.java similarity index 98% rename from src/main/java/nl/devpieter/utilize/utils/common/RandomUtils.java rename to src/main/java/nl/devpieter/utilize/utils/RandomUtils.java index b53506d..2b34f8c 100644 --- a/src/main/java/nl/devpieter/utilize/utils/common/RandomUtils.java +++ b/src/main/java/nl/devpieter/utilize/utils/RandomUtils.java @@ -1,4 +1,4 @@ -package nl.devpieter.utilize.utils.common; +package nl.devpieter.utilize.utils; public final class RandomUtils { diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/ClientUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/ClientUtils.java deleted file mode 100644 index a50737d..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/ClientUtils.java +++ /dev/null @@ -1,63 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.client.sound.SoundManager; -import net.minecraft.client.world.ClientWorld; - -public final class ClientUtils { - - private ClientUtils() { - } - - public static boolean isDevEnv() { - return FabricLoader.getInstance().isDevelopmentEnvironment(); - } - - public static MinecraftClient getClient() { - return MinecraftClient.getInstance(); - } - - public static boolean hasPlayer() { - return getClient().player != null; - } - - public static ClientPlayerEntity getPlayer() { - return getClient().player; - } - - public static boolean hasWorld() { - return getClient().world != null; - } - - public static ClientWorld getWorld() { - return getClient().world; - } - - public static boolean hasSoundManager() { - return getClient().getSoundManager() != null; - } - - public static SoundManager getSoundManager() { - return getClient().getSoundManager(); - } - - public static boolean hasNetworkHandler() { - return getClient().getNetworkHandler() != null; - } - - public static ClientPlayNetworkHandler getNetworkHandler() { - return getClient().getNetworkHandler(); - } - - public static boolean hasInteractionManager() { - return getClient().interactionManager != null; - } - - public static ClientPlayerInteractionManager getInteractionManager() { - return getClient().interactionManager; - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/EnchantmentUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/EnchantmentUtils.java deleted file mode 100644 index b17db70..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/EnchantmentUtils.java +++ /dev/null @@ -1,70 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.component.type.ItemEnchantmentsComponent; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.tag.EnchantmentTags; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Set; - -public final class EnchantmentUtils { - - private EnchantmentUtils() { - } - - public static boolean isMaxLevel(@NotNull RegistryEntry enchantment, int level) { - return level == enchantment.value().getMaxLevel(); - } - - public static boolean isAboveMaxLevel(@NotNull RegistryEntry enchantment, int level) { - return level > enchantment.value().getMaxLevel(); - } - - public static boolean isCurse(@NotNull RegistryEntry enchantment) { - return enchantment.isIn(EnchantmentTags.CURSE); - } - - public static boolean hasEnchantments(ItemStack stack) { - return EnchantmentHelper.hasEnchantments(stack); - } - - public static boolean hasEnchantment(@Nullable ItemStack stack, @NotNull RegistryEntry enchantment) { - if (stack == null || !hasEnchantments(stack)) return false; - - Set> enchantments = getEnchantments(stack); - return enchantments.stream().anyMatch(entry -> entry == enchantment); - } - - public static boolean hasEnchantment(@Nullable ItemStack stack, @NotNull RegistryKey enchantment) { - if (stack == null || !hasEnchantments(stack)) return false; - - Set> enchantments = getEnchantments(stack); - return enchantments.stream().anyMatch(entry -> entry.matchesKey(enchantment)); - } - - public static void forEachEnchantment(@NotNull ItemStack stack, @NotNull Consumer consumer) { - ItemEnchantmentsComponent component = getComponent(stack); - Set> enchantments = getEnchantments(stack); - - for (RegistryEntry enchantment : enchantments) { - consumer.accept(enchantment, component.getLevel(enchantment)); - } - } - - public static ItemEnchantmentsComponent getComponent(@NotNull ItemStack stack) { - return EnchantmentHelper.getEnchantments(stack); - } - - public static Set> getEnchantments(@NotNull ItemStack stack) { - return getComponent(stack).getEnchantments(); - } - - public interface Consumer { - void accept(RegistryEntry enchantment, int level); - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/InteractionUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/InteractionUtils.java deleted file mode 100644 index c17d3af..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/InteractionUtils.java +++ /dev/null @@ -1,14 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.screen.slot.SlotActionType; - -public final class InteractionUtils { - - private InteractionUtils() { - } - - public static void clickInventorySlot(int syncId, int packetSlot, int button, SlotActionType actionType) { - if (!ClientUtils.hasInteractionManager() || !ClientUtils.hasPlayer()) return; - ClientUtils.getInteractionManager().clickSlot(syncId, packetSlot, button, actionType, ClientUtils.getPlayer()); - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/InventoryUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/InventoryUtils.java deleted file mode 100644 index 406f430..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/InventoryUtils.java +++ /dev/null @@ -1,99 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; -import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; - -public final class InventoryUtils { - - private InventoryUtils() { - } - - public static boolean hasInventory() { - return ClientUtils.hasPlayer() && ClientUtils.getPlayer().getInventory() != null; - } - - public static @Nullable PlayerInventory getInventory() { - if (!ClientUtils.hasPlayer()) return null; - return ClientUtils.getPlayer().getInventory(); - } - - public static boolean isMainHandOf(@Nullable Item item) { - if (item == null || !hasInventory()) return false; - - ItemStack mainHand = getMainHand(); - return mainHand != null && mainHand.isOf(item); - } - - public static @Nullable ItemStack getMainHand() { - if (!hasInventory()) return null; - return ClientUtils.getPlayer().getMainHandStack(); - } - - public static boolean isOffhandOf(@Nullable Item item) { - if (item == null || !hasInventory()) return false; - - ItemStack offhand = getOffhand(); - return offhand != null && offhand.isOf(item); - } - - public static @Nullable ItemStack getOffhand() { - if (!hasInventory()) return null; - return ClientUtils.getPlayer().getOffHandStack(); - } - - public static void selectHotbarSlot(int slot) { - if (slot < 0 || slot > 8 || !hasInventory()) return; - getInventory().setSelectedSlot(slot); - } - - public static int getSelectedHotbarSlot() { - if (!hasInventory()) return -1; - return getInventory().getSelectedSlot(); - } - - public static @NotNull List findHotbarSlots(@Nullable Item item) { - if (item == null || !hasInventory()) return new ArrayList<>(); - - PlayerInventory inventory = getInventory(); - List slots = new ArrayList<>(); - - for (int i = 0; i < 9; i++) { - ItemStack stack = inventory.getStack(i); - if (stack.isOf(item)) slots.add(i); - } - - return slots; - } - - public static int countItem(@Nullable Item item) { - if (item == null || !hasInventory()) return -1; - PlayerInventory inventory = getInventory(); - - int count = 0; - - for (int i = 0; i < inventory.size(); i++) { - ItemStack stack = inventory.getStack(i); - if (stack.isOf(item)) count += stack.getCount(); - } - - return count; - } - - public static void clickSlot(int syncId, int packetSlot, int button, SlotActionType actionType) { - InteractionUtils.clickInventorySlot(syncId, packetSlot, button, actionType); - } - - public static void swapItemWithOffhand() { - NetworkUtils.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN)); - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/NetworkUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/NetworkUtils.java deleted file mode 100644 index e3ae13f..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/NetworkUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.network.packet.Packet; -import org.jetbrains.annotations.NotNull; - -public final class NetworkUtils { - - private NetworkUtils() { - } - - public static void sendPacket(@NotNull Packet packet) { - if (!ClientUtils.hasNetworkHandler()) return; - ClientUtils.getNetworkHandler().sendPacket(packet); - } - - public static void sendChatMessage(@NotNull String message) { - if (!ClientUtils.hasNetworkHandler()) return; - - if (message.startsWith("/")) sendChatCommand(message); - else ClientUtils.getNetworkHandler().sendChatMessage(message); - } - - public static void sendChatCommand(@NotNull String command) { - if (!ClientUtils.hasNetworkHandler()) return; - if (command.startsWith("/")) command = command.substring(1); - - ClientUtils.getNetworkHandler().sendChatCommand(command); - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/PlayerUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/PlayerUtils.java deleted file mode 100644 index 9f5bb71..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/PlayerUtils.java +++ /dev/null @@ -1,52 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.text.Text; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public final class PlayerUtils { - - private PlayerUtils() { - } - - public static void sendMessage(@NotNull Text message, boolean overlay) { - if (!ClientUtils.hasPlayer()) return; - ClientUtils.getPlayer().sendMessage(message, overlay); - } - - public static @Nullable HitResult getHitResult() { - if (!ClientUtils.hasPlayer()) return null; - - HitResult result = ClientUtils.getClient().crosshairTarget; - if (!(result instanceof HitResult hitResult)) return null; - - return hitResult; - } - - public static @Nullable BlockHitResult getBlockHitResult() { - if (!ClientUtils.hasPlayer()) return null; - - HitResult result = ClientUtils.getClient().crosshairTarget; - if (!(result instanceof BlockHitResult blockHitResult)) return null; - - return blockHitResult; - } - - public static @Nullable Block getTargetedBlock() { - BlockState blockState = getTargetedBlockState(); - if (blockState == null) return null; - - return blockState.getBlock(); - } - - public static @Nullable BlockState getTargetedBlockState() { - BlockHitResult blockHitResult = getBlockHitResult(); - if (blockHitResult == null) return null; - - return ClientUtils.getWorld().getBlockState(blockHitResult.getBlockPos()); - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/SoundUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/SoundUtils.java deleted file mode 100644 index f1b533e..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/SoundUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.client.sound.PositionedSoundInstance; -import net.minecraft.client.sound.SoundInstance; -import net.minecraft.sound.SoundEvent; -import org.jetbrains.annotations.NotNull; - -public final class SoundUtils { - - private SoundUtils() { - } - - public static void playOnMaster(@NotNull SoundEvent soundEvent) { - playOnMaster(soundEvent, 1.0F, 1.0F); - } - - public static void playOnMaster(@NotNull SoundEvent soundEvent, float pitch) { - playOnMaster(soundEvent, pitch, 1.0F); - } - - public static void playOnMaster(@NotNull SoundEvent soundEvent, float pitch, float volume) { - play(PositionedSoundInstance.master(soundEvent, pitch, volume)); - } - - public static void play(@NotNull SoundInstance soundInstance) { - if (!ClientUtils.hasSoundManager()) return; - ClientUtils.getSoundManager().play(soundInstance); - } -} diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/TextUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/TextUtils.java deleted file mode 100644 index 72603bd..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/TextUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.text.MutableText; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import org.jetbrains.annotations.NotNull; - -public final class TextUtils { - - private TextUtils() { - } - - public static MutableText currentOrDefaultStyle(@NotNull Text text, @NotNull Style defaultStyle) { - return Text.of("").copy().setStyle(defaultStyle).append(text); - } - - public static MutableText withStyle(@NotNull String text, @NotNull Style style) { - return withStyle(Text.of(text), style); - } - - public static MutableText withStyle(@NotNull Text text, @NotNull Style style) { - return text.copy().setStyle(style); - } - - public static MutableText clearStyle(@NotNull String text) { - return clearStyle(Text.of(text)); - } - - public static MutableText clearStyle(@NotNull Text text) { - return text.copy().setStyle(Style.EMPTY); - } -} \ No newline at end of file diff --git a/src/main/java/nl/devpieter/utilize/utils/minecraft/WorldUtils.java b/src/main/java/nl/devpieter/utilize/utils/minecraft/WorldUtils.java deleted file mode 100644 index bac83d7..0000000 --- a/src/main/java/nl/devpieter/utilize/utils/minecraft/WorldUtils.java +++ /dev/null @@ -1,50 +0,0 @@ -package nl.devpieter.utilize.utils.minecraft; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.Vec3i; -import nl.devpieter.utilize.utils.common.MathUtils; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public final class WorldUtils { - - private WorldUtils() { - } - - public static @Nullable BlockState getStateAt(@NotNull Vec3d vec3d) { - return getStateAt(MathUtils.from(vec3d)); - } - - public static @Nullable BlockState getStateAt(@NotNull Vec3i vec3i) { - return getStateAt(new BlockPos(vec3i)); - } - - public static @Nullable BlockState getStateAt(@NotNull BlockPos pos) { - if (!ClientUtils.hasWorld()) return null; - return ClientUtils.getWorld().getBlockState(pos); - } - - public static @Nullable Block getBlockAt(@NotNull Vec3d vec3d) { - return getBlockAt(MathUtils.from(vec3d)); - } - - public static @Nullable Block getBlockAt(@NotNull Vec3i vec3i) { - return getBlockAt(new BlockPos(vec3i)); - } - - public static @Nullable Block getBlockAt(@NotNull BlockPos pos) { - BlockState state = getStateAt(pos); - if (state == null) return null; - - return state.getBlock(); - } - - public static @Nullable Entity getEntity(int id) { - if (!ClientUtils.hasWorld()) return null; - return ClientUtils.getWorld().getEntityById(id); - } -} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 9f84965..31ff07a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -3,36 +3,30 @@ "id": "utilize", "version": "${version}", "name": "Utilize", - "description": "Yet another Minecraft modding library, made for DevPieter's mods.", - "authors": [ - "DevPieter" - ], - "contact": { - "homepage": "https://pietr.space/", - "sources": "https://github.com/DevPieter/Utilize", - "issues": "https://github.com/DevPieter/Utilize/issues" - }, + "description": "todo", + "authors": [], + "contact": {}, "license": "MIT", "icon": "assets/utilize/icon.png", - "environment": "client", + "environment": "*", "entrypoints": { "client": [ + "nl.devpieter.utilize.client.UtilizeClient" + ], + "main": [ "nl.devpieter.utilize.Utilize" ] }, "mixins": [ - "utilize.mixins.json" + "utilize.mixins.json", + { + "config": "utilize.client.mixins.json", + "environment": "client" + } ], "depends": { "fabricloader": ">=${loader_version}", - "fabric": "*", + "fabric-api": "*", "minecraft": ">=${minecraft_version} <=${max_minecraft_version}" - }, - "custom": { - "modmenu": { - "badges": [ - "library" - ] - } } } diff --git a/src/main/resources/utilize.mixins.json b/src/main/resources/utilize.mixins.json index 4140fc6..dd7c1c8 100644 --- a/src/main/resources/utilize.mixins.json +++ b/src/main/resources/utilize.mixins.json @@ -1,20 +1,15 @@ { "required": true, "minVersion": "0.8", - "package": "nl.devpieter.utilize.mixins", - "compatibilityLevel": "JAVA_21", - "client": [ - "ChatHudMixin", - "ClientPlayerEntityMixin", - "ClientPlayerInteractionManagerMixin", - "KeyBindingMixin", - "MinecraftClientMixin" + "package": "nl.devpieter.utilize.mixin", + "compatibilityLevel": "JAVA_25", + "mixins": [ + "ConnectionMixin" ], "injectors": { "defaultRequire": 1 }, - "mixins": [ - "ClientConnectionMixin", - "SeesMixin" - ] + "overwrites": { + "requireAnnotations": true + } } diff --git a/versions/1.21.9/gradle.properties b/versions/1.21.9/gradle.properties deleted file mode 100644 index 1ead45f..0000000 --- a/versions/1.21.9/gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -# check this on https://modmuss50.me/fabric.html -minecraft_version=1.21.9 -max_minecraft_version=1.21.11 - -yarn_mappings=1.21.9+build.1 -fabric_version=0.134.1+1.21.9 \ No newline at end of file diff --git a/versions/26.1/gradle.properties b/versions/26.1/gradle.properties new file mode 100644 index 0000000..d41f3d4 --- /dev/null +++ b/versions/26.1/gradle.properties @@ -0,0 +1,4 @@ +# check this on https://modmuss50.me/fabric.html +minecraft_version=26.1 +max_minecraft_version=26.2 +fabric_version=0.155.2+26.1.2 \ No newline at end of file diff --git a/versions/mainProject b/versions/mainProject index 3434b8f..bf18016 100644 --- a/versions/mainProject +++ b/versions/mainProject @@ -1 +1 @@ -1.21.9 \ No newline at end of file +26.1 \ No newline at end of file