From b4ec266cf45ee846be00ffa86d9fed419d0acb88 Mon Sep 17 00:00:00 2001 From: Kai Date: Sat, 14 Sep 2024 02:32:39 +0200 Subject: [PATCH] Initial commit --- .gitignore | 119 ++++++++++++++++ README.md | 9 ++ build.gradle | 128 ++++++++++++++++++ gradle.properties | 31 +++++ gradle/wrapper/gradle-wrapper.properties | 7 + resources/correct_1.png | Bin 0 -> 10403 bytes resources/correct_2.png | Bin 0 -> 17269 bytes resources/wrong_1.png | Bin 0 -> 13770 bytes resources/wrong_2.png | Bin 0 -> 12335 bytes settings.gradle | 12 ++ .../de/cadentem/obscure_tooltips_fix/OTF.java | 10 ++ .../mixin/TooltipRendererMixin.java | 56 ++++++++ src/main/resources/META-INF/mods.toml | 32 +++++ .../obscure_tooltips_fix.mixins.json | 16 +++ src/main/resources/pack.mcmeta | 6 + 15 files changed, 426 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 resources/correct_1.png create mode 100644 resources/correct_2.png create mode 100644 resources/wrong_1.png create mode 100644 resources/wrong_2.png create mode 100644 settings.gradle create mode 100644 src/main/java/de/cadentem/obscure_tooltips_fix/OTF.java create mode 100644 src/main/java/de/cadentem/obscure_tooltips_fix/mixin/TooltipRendererMixin.java create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/obscure_tooltips_fix.mixins.json create mode 100644 src/main/resources/pack.mcmeta diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5f737e --- /dev/null +++ b/.gitignore @@ -0,0 +1,119 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ +runs/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/README.md b/README.md new file mode 100644 index 0000000..29615cf --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +When [EMI](https://www.curseforge.com/minecraft/mc-mods/emi) and [Obscure Tooltips](https://www.curseforge.com/minecraft/mc-mods/obscure-tooltips) are installed it will turn this: + +![img.png](./resources/wrong_1.png) +![img.png](./resources/wrong_2.png) + +Into this: + +![img.png](./resources/correct_1.png) +![img.png](./resources/correct_2.png) \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..8ff8fe8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,128 @@ +plugins { + id 'eclipse' + id 'idea' + id 'maven-publish' + id 'net.neoforged.gradle' version '[6.0.18,6.2)' + id 'org.parchmentmc.librarian.forgegradle' version '1.+' + id 'org.spongepowered.mixin' version '0.7.+' +} + +version = minecraft_version + "-" + mod_version + +base { + archivesName = mod_id +} + +java.toolchain.languageVersion = JavaLanguageVersion.of(17) + +minecraft { + mappings channel: mapping_channel, version: mapping_version + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + runs { + configureEach { + workingDirectory project.file("run/${it.name}") + property 'forge.logging.markers', 'SCAN' /* REGISTRIES / REGISTRYDUMP */ + property 'forge.logging.console.level', 'debug' + + mods { + "${mod_id}" { + source sourceSets.main + } + } + } + + client { + property 'forge.enabledGameTestNamespaces', mod_id + // Support for mixins of other mods + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" + } + + clientRandom { + parent runs.client + // #### will be replaced with a random number | UUID is a randomly generated one + args '--username', 'Dev####', '--uuid', 'fdb0e318-1ac3-4049-b6f8-d024c0b87a56' + } + + server { + property 'forge.enabledGameTestNamespaces', mod_id + // Support for mixins of other mods + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" + } + + data { + args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + } + } +} + +sourceSets.main.resources { srcDir 'src/generated/resources' } + +repositories { + flatDir { dirs 'dev' } + maven { url = "https://jitpack.io" } // Mixin Squared + maven { url = "https://www.cursemaven.com" } // CurseForge +} + +dependencies { + minecraft "net.neoforged:forge:${minecraft_version}-${neo_version}" + + implementation fg.deobf("curse.maven:emi-580555:5497473") // 1.1.10 + implementation fg.deobf("curse.maven:obscure-tooltips-715660:4686579") // 2.2770828") + + /* --- Mixin Configuration --- */ + implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixin_extras_version}")) + implementation(jarJar("io.github.llamalad7:mixinextras-forge:${mixin_extras_version}")) { + jarJar.ranged(it, "[${mixin_extras_version},)") + } + + annotationProcessor "org.spongepowered:mixin:0.8.5:processor" +} + +mixin { + config "${mod_id}.mixins.json" + add sourceSets.main, "${mod_id}.refmap.json" +} + +tasks.withType(ProcessResources).configureEach { + var replaceProperties = [ + minecraft_version : minecraft_version, + minecraft_version_range: minecraft_version_range, + loader_version_range : loader_version_range, + mod_id : mod_id, + mod_name : mod_name, + mod_license : mod_license, + mod_version : mod_version, + mod_authors : mod_authors, + mod_description : mod_description + ] + + inputs.properties replaceProperties + + filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) { + expand replaceProperties + [project: project] + } +} + +tasks.named('jar', Jar).configure { + manifest { + attributes([ + 'Specification-Title' : mod_id, + 'Specification-Vendor' : mod_authors, + 'Specification-Version' : '1', + 'Implementation-Title' : project.name, + 'Implementation-Version' : mod_version, + 'Implementation-Vendor' : mod_authors, + 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + ]) + } + + finalizedBy 'reobfJar' +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..bc93cd3 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,31 @@ +group=de.cadentem + +minecraft_version=1.20.1 +neo_version=47.1.65 + +minecraft_version_range=[1.20, 1.20.1] +loader_version_range=[46,) + +# Mappings +mapping_channel=parchment +mapping_version=2023.09.03-1.20.1 + +# Mod +mod_name=Obscure Tooltips Fix +mod_authors=Cadentem +mod_id=obscure_tooltips_fix +mod_description=Fixes tooltip issues +mod_license=MIT License + +mod_version=1.0.0 + +# Dependencies +mixin_squared_version=0.1.1 +mixin_extras_version=0.5.0-beta.3 + +# Jar +file_name=obscure_tooltips_fix + +# Gradle +org.gradle.daemon=false +org.gradle.jvmargs=-Xmx3G \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..870dc35 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/resources/correct_1.png b/resources/correct_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cee659083522f04995996d53bb18644aeb207527 GIT binary patch literal 10403 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 TJ}1eCOgfJZwJIMyfA#+WlE5Ps literal 0 HcmV?d00001 diff --git a/resources/correct_2.png b/resources/correct_2.png new file mode 100644 index 0000000000000000000000000000000000000000..77929fd9d9694e1745c50581cbfb9b67140b4900 GIT binary patch literal 17269 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 U86fk3yZ`_I07*qoM6N<$f|zvRYybcN literal 0 HcmV?d00001 diff --git a/resources/wrong_1.png b/resources/wrong_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0ee7a9d039797caedd0bc7fd5b28a49ed81567 GIT binary patch literal 13770 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 literal 0 HcmV?d00001 diff --git a/resources/wrong_2.png b/resources/wrong_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dd293120788d640819669c1135ebad28b76c7f5b GIT binary patch literal 12335 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 VRDf~VkU{_e002ovPDHLkV1j%8vP%E} literal 0 HcmV?d00001 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..dce46a5 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,12 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { /* NeoForged */ url "https://maven.neoforged.net/releases" } + maven { /* ParchmentMC */ url "https://maven.parchmentmc.org" } + maven { /* SpongePowered */ url "https://repo.spongepowered.org/repository/maven-public/" } + } +} + +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' +} \ No newline at end of file diff --git a/src/main/java/de/cadentem/obscure_tooltips_fix/OTF.java b/src/main/java/de/cadentem/obscure_tooltips_fix/OTF.java new file mode 100644 index 0000000..1b53cb1 --- /dev/null +++ b/src/main/java/de/cadentem/obscure_tooltips_fix/OTF.java @@ -0,0 +1,10 @@ +package de.cadentem.obscure_tooltips_fix; + +import net.minecraftforge.fml.common.Mod; + +@Mod(OTF.MODID) +public class OTF { + public static final String MODID = "obscure_tooltips_fix"; + + public static boolean SWITCHED; +} \ No newline at end of file diff --git a/src/main/java/de/cadentem/obscure_tooltips_fix/mixin/TooltipRendererMixin.java b/src/main/java/de/cadentem/obscure_tooltips_fix/mixin/TooltipRendererMixin.java new file mode 100644 index 0000000..474e596 --- /dev/null +++ b/src/main/java/de/cadentem/obscure_tooltips_fix/mixin/TooltipRendererMixin.java @@ -0,0 +1,56 @@ +package de.cadentem.obscure_tooltips_fix.mixin; + +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import com.obscuria.tooltips.client.renderer.TooltipContext; +import com.obscuria.tooltips.client.renderer.TooltipRenderer; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.screen.EmiScreenManager; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; +import net.minecraft.world.item.ItemStack; +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.ModifyVariable; + +import java.util.List; + +@Mixin(value = TooltipRenderer.class, remap = false) +public abstract class TooltipRendererMixin { + @Shadow private static ItemStack renderStack; + @Unique private static boolean obscure_tooltip_fix$switched; + + @ModifyVariable(method = "render", at = @At(value = "HEAD"), argsOnly = true) + private static ItemStack obscure_tooltips_fix$handleEmptyStack(final ItemStack tooltipStack, /* Method arguments */ final TooltipContext context, final ItemStack ignored, final Font font, final List components, final int x, final int y) { + if (tooltipStack.isEmpty()) { + List stacks = EmiScreenManager.getHoveredStack(x, y, true, true).getStack().getEmiStacks(); + + if (!stacks.isEmpty()) { + obscure_tooltip_fix$switched = true; + return stacks.get(0).getItemStack(); + } + } + + return tooltipStack; + } + + @Definition(id = "renderStack", field = "Lcom/obscuria/tooltips/client/renderer/TooltipRenderer;renderStack:Lnet/minecraft/world/item/ItemStack;") + @Definition(id = "stack", local = @Local(type = ItemStack.class, ordinal = 0)) + @Expression("stack == renderStack") + @ModifyExpressionValue(method = "updateStyle", at = @At("MIXINEXTRAS:EXPRESSION")) + private static boolean obscure_tooltips_fix$isSameStack(final boolean original, @Local(argsOnly = true, ordinal = 0) final ItemStack stack) { + if (!original && obscure_tooltip_fix$switched) { + obscure_tooltip_fix$switched = false; + + if (stack.getItem() == renderStack.getItem()) { + return true; + } + } + + return original; + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..39f7600 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,32 @@ +modLoader = "javafml" +loaderVersion = "${loader_version_range}" +license = "${mod_license}" + +[[mods]] +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +authors = "${mod_authors}" +# Display Test controls the display for your mod in the server connection screen +# MATCH_VERSION means that your mod will cause a red X if the versions on client and server differ. This is the default behaviour and should be what you choose if you have server and client elements to your mod. +# IGNORE_SERVER_VERSION means that your mod will not cause a red X if it's present on the server but not on the client. This is what you should use if you're a server only mod. +# IGNORE_ALL_VERSION means that your mod will not cause a red X if it's present on the client or the server. This is a special case and should only be used if your mod has no server component. +# NONE means that no display test is set on your mod. You need to do this yourself, see IExtensionPoint.DisplayTest for more information. You can define any scheme you wish with this value. +# IMPORTANT NOTE: this is NOT an instruction as to which environments (CLIENT or DEDICATED SERVER) your mod loads on. Your mod should load (and maybe do nothing!) whereever it finds itself. +#displayTest="MATCH_VERSION" # MATCH_VERSION is the default if nothing is specified (#optional) + +description = '''${mod_description}''' + +[[dependencies."${ mod_id }"]] +modId = "forge" +mandatory = true +versionRange = "${loader_version_range}" +ordering = "NONE" +side = "BOTH" + +[[dependencies."${ mod_id }"]] +modId = "minecraft" +mandatory = true +versionRange = "${minecraft_version_range}" +ordering = "NONE" +side = "BOTH" \ No newline at end of file diff --git a/src/main/resources/obscure_tooltips_fix.mixins.json b/src/main/resources/obscure_tooltips_fix.mixins.json new file mode 100644 index 0000000..b61dc4e --- /dev/null +++ b/src/main/resources/obscure_tooltips_fix.mixins.json @@ -0,0 +1,16 @@ +{ + "required": true, + "minVersion": "0.8", + "minMixinExtrasVersion": "0.5.0-beta.3", + "package": "de.cadentem.obscure_tooltips_fix.mixin", + "compatibilityLevel": "JAVA_17", + "refmap": "obscure_tooltips_fix.refmap.json", + "mixins": [ + ], + "client": [ + "TooltipRendererMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..c9baa56 --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "obscure_tooltips_fix resources", + "pack_format": 15 + } +}