Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
SiverDX committed Sep 14, 2024
0 parents commit b4ec266
Show file tree
Hide file tree
Showing 15 changed files with 426 additions and 0 deletions.
119 changes: 119 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
128 changes: 128 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -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'
}
31 changes: 31 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -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
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -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
Binary file added resources/correct_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/correct_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/wrong_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/wrong_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -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'
}
10 changes: 10 additions & 0 deletions src/main/java/de/cadentem/obscure_tooltips_fix/OTF.java
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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<ClientTooltipComponent> components, final int x, final int y) {
if (tooltipStack.isEmpty()) {
List<EmiStack> 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;
}
}
Loading

0 comments on commit b4ec266

Please sign in to comment.