aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlueWeabo <ilia.iliev@tuta.com>2024-08-30 18:00:12 +0300
committerBlueWeabo <ilia.iliev@tuta.com>2024-08-30 18:00:12 +0300
commit557fb75ff46f2ad422e64b45887a33a42fe6cafb (patch)
tree49eb77a1c9f2167662de7c9e694d4b96b280be28
parentdffb3bd55f6ee9e6be9fe526c3c7895b73448f33 (diff)
parent16b8e3770971f33b11e7a0d7ee9c5640bfa10ce7 (diff)
downloadGT5-Unofficial-557fb75ff46f2ad422e64b45887a33a42fe6cafb.tar.gz
GT5-Unofficial-557fb75ff46f2ad422e64b45887a33a42fe6cafb.tar.bz2
GT5-Unofficial-557fb75ff46f2ad422e64b45887a33a42fe6cafb.zip
Merge in DetravScannerMod with history
git-subtree-dir: detrav git-subtree-mainline: dffb3bd55f6ee9e6be9fe526c3c7895b73448f33 git-subtree-split: 16b8e3770971f33b11e7a0d7ee9c5640bfa10ce7
-rw-r--r--detrav/.git-blame-ignore-revs2
-rw-r--r--detrav/.gitattributes44
-rw-r--r--detrav/.github/scripts/test-no-error-reports.sh27
-rw-r--r--detrav/.github/workflows/build-and-test.yml13
-rw-r--r--detrav/.github/workflows/release-tags.yml14
-rw-r--r--detrav/.gitignore31
-rw-r--r--detrav/.settings/org.eclipse.jdt.core.prefs14
-rw-r--r--detrav/CODEOWNERS3
-rw-r--r--detrav/README.txt37
-rw-r--r--detrav/build.gradle5
-rw-r--r--detrav/dependencies.gradle7
-rw-r--r--detrav/gradle.properties192
-rw-r--r--detrav/gradle/wrapper/gradle-wrapper.jarbin0 -> 43453 bytes
-rw-r--r--detrav/gradle/wrapper/gradle-wrapper.properties7
-rwxr-xr-xdetrav/gradlew249
-rw-r--r--detrav/gradlew.bat92
-rw-r--r--detrav/jitpack.yml2
-rw-r--r--detrav/repositories.gradle4
-rw-r--r--detrav/settings.gradle23
-rw-r--r--detrav/src/main/java/com/detrav/DetravScannerMod.java76
-rw-r--r--detrav/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java21
-rw-r--r--detrav/src/main/java/com/detrav/commands/DetravScannerCommand.java156
-rw-r--r--detrav/src/main/java/com/detrav/enums/DetravToolDictNames.java9
-rw-r--r--detrav/src/main/java/com/detrav/enums/Textures01.java17
-rw-r--r--detrav/src/main/java/com/detrav/events/DetravLoginEventHandler.java22
-rw-r--r--detrav/src/main/java/com/detrav/gui/DetravScannerGUI.java120
-rw-r--r--detrav/src/main/java/com/detrav/gui/OresList.java66
-rw-r--r--detrav/src/main/java/com/detrav/gui/textures/DetravMapTexture.java149
-rw-r--r--detrav/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java362
-rw-r--r--detrav/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java255
-rw-r--r--detrav/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java424
-rw-r--r--detrav/src/main/java/com/detrav/items/processing/ProcessingDetravToolProspector.java113
-rw-r--r--detrav/src/main/java/com/detrav/items/tools/DetravProspector.java35
-rw-r--r--detrav/src/main/java/com/detrav/items/tools/DetravToolElectricProspector.java34
-rw-r--r--detrav/src/main/java/com/detrav/items/tools/DetravToolElectricProspectorBase.java201
-rw-r--r--detrav/src/main/java/com/detrav/net/DetravNetwork.java72
-rw-r--r--detrav/src/main/java/com/detrav/net/DetravPacket.java16
-rw-r--r--detrav/src/main/java/com/detrav/net/ProspectingPacket.java188
-rw-r--r--detrav/src/main/java/com/detrav/proxies/ClientProxy.java49
-rw-r--r--detrav/src/main/java/com/detrav/proxies/CommonProxy.java55
-rw-r--r--detrav/src/main/java/com/detrav/proxies/ServerProxy.java22
-rw-r--r--detrav/src/main/java/com/detrav/utils/BartWorksHelper.java23
-rw-r--r--detrav/src/main/java/com/detrav/utils/DetravCreativeTab.java52
-rw-r--r--detrav/src/main/java/com/detrav/utils/FluidColors.java87
-rw-r--r--detrav/src/main/java/com/detrav/utils/GTppHelper.java67
-rw-r--r--detrav/src/main/resources/assets/detravscannermod/lang/en_US.lang45
-rw-r--r--detrav/src/main/resources/assets/detravscannermod/lang/zh_CN.lang45
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/gui/propick.pngbin0 -> 1250 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_LuV_PRO_PICK_HEAD.pngbin0 -> 192 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_LuV_PRO_PICK_HEAD_OVERLAY.pngbin0 -> 270 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_UHV_PRO_PICK_HEAD.pngbin0 -> 192 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_UHV_PRO_PICK_HEAD_OVERLAY.pngbin0 -> 277 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_UV_PRO_PICK_HEAD.pngbin0 -> 192 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_UV_PRO_PICK_HEAD_OVERLAY.pngbin0 -> 281 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_ZPM_PRO_PICK_HEAD.pngbin0 -> 192 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/ELECTRIC_ZPM_PRO_PICK_HEAD_OVERLAY.pngbin0 -> 281 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/PRO_PICK_HEAD.pngbin0 -> 2740 bytes
-rw-r--r--detrav/src/main/resources/assets/gregtech/textures/items/gt.detrav.metatool.01/PRO_PICK_HEAD_OVERLAY.pngbin0 -> 1428 bytes
-rw-r--r--detrav/src/main/resources/mcmod.info16
59 files changed, 3563 insertions, 0 deletions
diff --git a/detrav/.git-blame-ignore-revs b/detrav/.git-blame-ignore-revs
new file mode 100644
index 0000000000..e357c46d98
--- /dev/null
+++ b/detrav/.git-blame-ignore-revs
@@ -0,0 +1,2 @@
+# Ignore spotlessApply reformat
+b68f567fa1353f4d9d852db1e71682cc882ec8ee
diff --git a/detrav/.gitattributes b/detrav/.gitattributes
new file mode 100644
index 0000000000..fd2792b6cb
--- /dev/null
+++ b/detrav/.gitattributes
@@ -0,0 +1,44 @@
+* text eol=lf
+
+*.[jJ][aA][rR] binary
+
+*.[pP][nN][gG] binary
+*.[jJ][pP][gG] binary
+*.[jJ][pP][eE][gG] binary
+*.[gG][iI][fF] binary
+*.[tT][iI][fF] binary
+*.[tT][iI][fF][fF] binary
+*.[iI][cC][oO] binary
+*.[sS][vV][gG] text
+*.[eE][pP][sS] binary
+*.[xX][cC][fF] binary
+
+*.[kK][aA][rR] binary
+*.[mM]4[aA] binary
+*.[mM][iI][dD] binary
+*.[mM][iI][dD][iI] binary
+*.[mM][pP]3 binary
+*.[oO][gG][gG] binary
+*.[rR][aA] binary
+
+*.7[zZ] binary
+*.[gG][zZ] binary
+*.[tT][aA][rR] binary
+*.[tT][gG][zZ] binary
+*.[zZ][iI][pP] binary
+
+*.[tT][cC][nN] binary
+*.[sS][oO] binary
+*.[dD][lL][lL] binary
+*.[dD][yY][lL][iI][bB] binary
+*.[pP][sS][dD] binary
+*.[tT][tT][fF] binary
+*.[oO][tT][fF] binary
+
+*.[pP][aA][tT][cC][hH] -text
+
+*.[bB][aA][tT] text eol=crlf
+*.[cC][mM][dD] text eol=crlf
+*.[pP][sS]1 text eol=crlf
+
+*[aA][uU][tT][oO][gG][eE][nN][eE][rR][aA][tT][eE][dD]* binary
diff --git a/detrav/.github/scripts/test-no-error-reports.sh b/detrav/.github/scripts/test-no-error-reports.sh
new file mode 100644
index 0000000000..e3876606d5
--- /dev/null
+++ b/detrav/.github/scripts/test-no-error-reports.sh
@@ -0,0 +1,27 @@
+if [[ -d "run/crash-reports" ]]; then
+ echo "Crash reports detected:"
+ cat $directory/*
+ exit 1
+fi
+
+if grep --quiet "Fatal errors were detected" server.log; then
+ echo "Fatal errors detected:"
+ cat server.log
+ exit 1
+fi
+
+if grep --quiet "The state engine was in incorrect state ERRORED and forced into state SERVER_STOPPED" server.log; then
+ echo "Server force stopped:"
+ cat server.log
+ exit 1
+fi
+
+if grep --quiet 'Done .+ For help, type "help" or "?"' server.log; then
+ echo "Server didn't finish startup:"
+ cat server.log
+ exit 1
+fi
+
+echo "No crash reports detected"
+exit 0
+
diff --git a/detrav/.github/workflows/build-and-test.yml b/detrav/.github/workflows/build-and-test.yml
new file mode 100644
index 0000000000..3ee2f686fd
--- /dev/null
+++ b/detrav/.github/workflows/build-and-test.yml
@@ -0,0 +1,13 @@
+
+name: Build and test
+
+on:
+ pull_request:
+ branches: [ master, main ]
+ push:
+ branches: [ master, main ]
+
+jobs:
+ build-and-test:
+ uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/build-and-test.yml@master
+ secrets: inherit
diff --git a/detrav/.github/workflows/release-tags.yml b/detrav/.github/workflows/release-tags.yml
new file mode 100644
index 0000000000..e4c0be6b0d
--- /dev/null
+++ b/detrav/.github/workflows/release-tags.yml
@@ -0,0 +1,14 @@
+
+name: Release tagged build
+
+on:
+ push:
+ tags: [ '*' ]
+
+permissions:
+ contents: write
+
+jobs:
+ release-tags:
+ uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/release-tags.yml@master
+ secrets: inherit
diff --git a/detrav/.gitignore b/detrav/.gitignore
new file mode 100644
index 0000000000..75c41f65d5
--- /dev/null
+++ b/detrav/.gitignore
@@ -0,0 +1,31 @@
+.gradle
+.settings
+/.idea/
+/run/
+/build/
+/eclipse/
+.classpath
+.project
+/bin/
+/config/
+/crash-reports/
+/logs/
+options.txt
+/saves/
+usernamecache.json
+banned-ips.json
+banned-players.json
+eula.txt
+ops.json
+server.properties
+servers.dat
+usercache.json
+whitelist.json
+/out/
+*.iml
+*.ipr
+*.iws
+src/main/resources/mixins.*.json
+*.bat
+*.DS_Store
+!gradlew.bat
diff --git a/detrav/.settings/org.eclipse.jdt.core.prefs b/detrav/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..5c85ec9d9b
--- /dev/null
+++ b/detrav/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,14 @@
+#
+#Mon Jun 04 22:04:20 CEST 2018
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
diff --git a/detrav/CODEOWNERS b/detrav/CODEOWNERS
new file mode 100644
index 0000000000..a6b5f68cd0
--- /dev/null
+++ b/detrav/CODEOWNERS
@@ -0,0 +1,3 @@
+# Any Github changes require admin approval
+/.github/** @GTNewHorizons/admin
+
diff --git a/detrav/README.txt b/detrav/README.txt
new file mode 100644
index 0000000000..744ba3b6ee
--- /dev/null
+++ b/detrav/README.txt
@@ -0,0 +1,37 @@
+-------------------------------------------
+Source installation information for modders
+-------------------------------------------
+This code follows the Minecraft Forge installation methodology. It will apply
+some small patches to the vanilla MCP source code, giving you and it access
+to some of the data and functions you need to build a successful mod.
+
+Note also that the patches are built against "unrenamed" MCP source code (aka
+srgnames) - this means that you will not be able to read them directly against
+normal code.
+
+Source pack installation information:
+
+Standalone source installation
+==============================
+
+To install this source code for development purposes, extract this zip file.
+It ships with a demonstration mod. Run 'gradlew setupDevWorkspace' to create
+a gradle environment primed with FML. Run 'gradlew eclipse' or 'gradlew idea' to
+create an IDE workspace of your choice.
+Refer to ForgeGradle for more information about the gradle environment
+Note: On macs or linux you run the './gradlew.sh' instead of 'gradlew'
+
+Forge source installation
+=========================
+MinecraftForge ships with this code and installs it as part of the forge
+installation process, no further action is required on your part.
+
+For reference this is version @MAJOR@.@MINOR@.@REV@.@BUILD@ of FML
+for Minecraft version @MCVERSION@.
+
+LexManos' Install Video
+=======================
+https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be
+
+For more details update more often refer to the Forge Forums:
+http://www.minecraftforge.net/forum/index.php/topic,14048.0.html
diff --git a/detrav/build.gradle b/detrav/build.gradle
new file mode 100644
index 0000000000..e57a16f9f1
--- /dev/null
+++ b/detrav/build.gradle
@@ -0,0 +1,5 @@
+//version: 1707058017
+
+plugins {
+ id 'com.gtnewhorizons.gtnhconvention'
+}
diff --git a/detrav/dependencies.gradle b/detrav/dependencies.gradle
new file mode 100644
index 0000000000..0dcf84e226
--- /dev/null
+++ b/detrav/dependencies.gradle
@@ -0,0 +1,7 @@
+// Add your dependencies here
+
+dependencies {
+ api('com.github.GTNewHorizons:GT5-Unofficial:5.09.48.37:dev')
+
+ compileOnly('com.github.GTNewHorizons:VisualProspecting:1.2.11:dev') { transitive = false }
+}
diff --git a/detrav/gradle.properties b/detrav/gradle.properties
new file mode 100644
index 0000000000..256ed6587a
--- /dev/null
+++ b/detrav/gradle.properties
@@ -0,0 +1,192 @@
+# ExampleMod tag to use as Blowdryer (Spotless, etc.) settings version, leave empty to disable.
+# LOCAL to test local config updates.
+gtnh.settings.blowdryerTag = 0.2.0
+
+# Human-readable mod name, available for mcmod.info population.
+modName = GT Scanner Mod
+
+# Case-sensitive identifier string, available for mcmod.info population and used for automatic mixin JSON generation.
+# Conventionally lowercase.
+modId = detravscannermod
+
+# Root package of the mod, used to find various classes in other properties,
+# mcmod.info substitution, enabling assertions in run tasks, etc.
+modGroup = com.detrav
+
+# Whether to use modGroup as the maven publishing group.
+# Due to a history of using JitPack, the default is com.github.GTNewHorizons for all mods.
+useModGroupForPublishing = false
+
+# Updates your build.gradle and settings.gradle automatically whenever an update is available.
+autoUpdateBuildScript = false
+
+# Version of Minecraft to target
+minecraftVersion = 1.7.10
+
+# Version of Minecraft Forge to target
+forgeVersion = 10.13.4.1614
+
+# Specify an MCP channel for dependency deobfuscation and the deobfParams task.
+channel = stable
+
+# Specify an MCP mappings version for dependency deobfuscation and the deobfParams task.
+mappingsVersion = 12
+
+# Defines other MCP mappings for dependency deobfuscation.
+remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/
+
+# Select a default username for testing your mod. You can always override this per-run by running
+# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE.
+developmentEnvironmentUserName = Developer
+
+# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8.
+# See https://github.com/bsideup/jabel for details on how this works.
+enableModernJavaSyntax = false
+
+# Enables injecting missing generics into the decompiled source code for a better coding experience.
+# Turns most publicly visible List, Map, etc. into proper List<E>, Map<K, V> types.
+enableGenericInjection = false
+
+# Generate a class with a String field for the mod version named as defined below.
+# If generateGradleTokenClass is empty or not missing, no such class will be generated.
+# If gradleTokenVersion is empty or missing, the field will not be present in the class.
+generateGradleTokenClass = com.detrav.Tags
+
+# Name of the token containing the project's current version to generate/replace.
+gradleTokenVersion = VERSION
+
+# [DEPRECATED] Mod ID replacement token.
+gradleTokenModId =
+
+# [DEPRECATED] Mod name replacement token.
+gradleTokenModName =
+
+# [DEPRECATED] Mod Group replacement token.
+gradleTokenGroupName =
+
+# [DEPRECATED]
+# Multiple source files can be defined here by providing a comma-separated list: Class1.java,Class2.java,Class3.java
+# public static final String VERSION = "GRADLETOKEN_VERSION";
+# The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's
+# version in @Mod([...], version = VERSION, [...]).
+# Leave these properties empty to skip individual token replacements.
+replaceGradleTokenInFile =
+
+# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can
+# leave this property empty.
+# Example value: (apiPackage = api) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.api
+apiPackage =
+
+# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
+# There can be multiple files in a space-separated list.
+# Example value: mymodid_at.cfg nei_at.cfg
+accessTransformersFile =
+
+# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
+usesMixins = false
+
+# Adds some debug arguments like verbose output and class export.
+usesMixinDebug = false
+
+# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
+mixinPlugin =
+
+# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
+mixinsPackage =
+
+# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
+# This parameter is for legacy compatibility only
+# Example value: (coreModClass = asm.FMLPlugin) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.asm.FMLPlugin
+coreModClass =
+
+# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class
+# that is annotated with @Mod) you want this to be true. When in doubt: leave it on false!
+containsMixinsAndOrCoreModOnly = false
+
+# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins.
+forceEnableMixins = false
+
+# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated into your jar. It is your
+# responsibility to check the license and request permission for distribution if required.
+usesShadowedDependencies = false
+
+# If disabled, won't remove unused classes from shadowed dependencies. Some libraries use reflection to access
+# their own classes, making the minimization unreliable.
+minimizeShadowedDependencies = true
+
+# If disabled, won't rename the shadowed classes.
+relocateShadowedDependencies = true
+
+# Adds the GTNH maven, CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
+includeWellKnownRepositories = true
+
+# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven.
+# Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables.
+# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle.
+usesMavenPublishing = true
+
+# Maven repository to publish the mod to.
+# mavenPublishUrl = https\://nexus.gtnewhorizons.com/repository/releases/
+
+# Publishing to Modrinth requires you to set the MODRINTH_TOKEN environment variable to your current Modrinth API token.
+#
+# The project's ID on Modrinth. Can be either the slug or the ID.
+# Leave this empty if you don't want to publish to Modrinth.
+modrinthProjectId =
+
+# The project's relations on Modrinth. You can use this to refer to other projects on Modrinth.
+# Syntax: scope1-type1:name1;scope2-type2:name2;...
+# Where scope can be one of [required, optional, incompatible, embedded],
+# type can be one of [project, version],
+# and the name is the Modrinth project or version slug/id of the other mod.
+# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech
+# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true
+modrinthRelations =
+
+# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens.
+#
+# The project's numeric ID on CurseForge. You can find this in the About Project box.
+# Leave this empty if you don't want to publish on CurseForge.
+curseForgeProjectId =
+
+# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge.
+# Syntax: type1:name1;type2:name2;...
+# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible],
+# and the name is the CurseForge project slug of the other mod.
+# Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft
+# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
+curseForgeRelations =
+
+# Optional parameter to customize the produced artifacts. Use this to preserve artifact naming when migrating older
+# projects. New projects should not use this parameter.
+customArchiveBaseName = GT Scanner Mod
+
+# Optional parameter to have the build automatically fail if an illegal version is used.
+# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'.
+# The check is ONLY performed if the version is a git tag.
+# Note: the specified string must be escaped, so e.g. 1\\.1\\.\\d+ instead of 1\.1\.\d+
+# versionPattern =
+
+# Uncomment to prevent the source code from being published.
+# noPublishedSources = true
+
+# Uncomment this to disable Spotless checks.
+# This should only be uncommented to keep it easier to sync with upstream/other forks.
+# That is, if there is no other active fork/upstream, NEVER change this.
+# disableSpotless = true
+
+# Uncomment this to disable Checkstyle checks (currently wildcard import check).
+# disableCheckstyle = true
+
+# Override the IDEA build type. Valid values are: "" (leave blank, do not override), "idea" (force use native IDEA build), "gradle"
+# (force use delegated build).
+# This is meant to be set in $HOME/.gradle/gradle.properties.
+# e.g. add "systemProp.org.gradle.project.ideaOverrideBuildType=idea" will override the build type to be native build.
+# WARNING: If you do use this option, it will overwrite whatever you have in your existing projects. This might not be what you want!
+# Usually there is no need to uncomment this here as other developers do not necessarily use the same build type as you.
+# ideaOverrideBuildType = idea
+
+# Whether IDEA should run spotless checks when pressing the Build button.
+# This is meant to be set in $HOME/.gradle/gradle.properties.
+# ideaCheckSpotlessOnBuild = true
+
diff --git a/detrav/gradle/wrapper/gradle-wrapper.jar b/detrav/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000..e6441136f3
--- /dev/null
+++ b/detrav/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/detrav/gradle/wrapper/gradle-wrapper.properties b/detrav/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000..b82aa23a4f
--- /dev/null
+++ b/detrav/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/detrav/gradlew b/detrav/gradlew
new file mode 100755
index 0000000000..1aa94a4269
--- /dev/null
+++ b/detrav/gradlew
@@ -0,0 +1,249 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 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.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%