diff --git a/build.gradle b/build.gradle index 393099040..b894d6477 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1685785062 +//version: 1692122114 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. @@ -69,7 +69,7 @@ plugins { id 'com.diffplug.spotless' version '6.13.0' apply false // 6.13.0 is the last jvm8 supporting version id 'com.modrinth.minotaur' version '2.+' apply false id 'com.matthewprenger.cursegradle' version '1.4.0' apply false - id 'com.gtnewhorizons.retrofuturagradle' version '1.3.14' + id 'com.gtnewhorizons.retrofuturagradle' version '1.3.24' } print("You might want to check out './gradlew :faq' if your build fails.\n") @@ -115,6 +115,8 @@ propertyDefaultIfUnset("usesMixinDebug", project.usesMixins) propertyDefaultIfUnset("forceEnableMixins", false) propertyDefaultIfUnset("channel", "stable") propertyDefaultIfUnset("mappingsVersion", "12") +propertyDefaultIfUnset("usesMavenPublishing", true) +propertyDefaultIfUnset("mavenPublishUrl", "http://jenkins.usrv.eu:8081/nexus/content/repositories/releases") propertyDefaultIfUnset("modrinthProjectId", "") propertyDefaultIfUnset("modrinthRelations", "") propertyDefaultIfUnset("curseForgeProjectId", "") @@ -357,7 +359,27 @@ catch (Exception ignored) { String identifiedVersion String versionOverride = System.getenv("VERSION") ?: null try { - identifiedVersion = versionOverride == null ? gitVersion() : versionOverride + // Produce a version based on the tag, or for branches something like 0.2.2-configurable-maven-and-extras.38+43090270b6-dirty + if (versionOverride == null) { + def gitDetails = versionDetails() + def isDirty = gitVersion().endsWith(".dirty") // No public API for this, isCleanTag has a different meaning + String branchName = gitDetails.branchName ?: (System.getenv('GIT_BRANCH') ?: 'git') + if (branchName.startsWith('origin/')) { + branchName = branchName.minus('origin/') + } + branchName = branchName.replaceAll("[^a-zA-Z0-9-]+", "-") // sanitize branch names for semver + identifiedVersion = gitDetails.lastTag ?: '${gitDetails.gitHash}' + if (gitDetails.commitDistance > 0) { + identifiedVersion += "-${branchName}.${gitDetails.commitDistance}+${gitDetails.gitHash}" + if (isDirty) { + identifiedVersion += "-dirty" + } + } else if (isDirty) { + identifiedVersion += "-${branchName}+${gitDetails.gitHash}-dirty" + } + } else { + identifiedVersion = versionOverride + } } catch (Exception ignored) { out.style(Style.Failure).text( @@ -379,9 +401,13 @@ if (identifiedVersion == versionOverride) { group = "com.github.GTNewHorizons" if (project.hasProperty("customArchiveBaseName") && customArchiveBaseName) { - archivesBaseName = customArchiveBaseName + base { + archivesName = customArchiveBaseName + } } else { - archivesBaseName = modId + base { + archivesName = modId + } } @@ -465,10 +491,19 @@ sourceSets { } } -if (file('addon.gradle').exists()) { +if (file('addon.gradle.kts').exists()) { + apply from: 'addon.gradle.kts' +} else if (file('addon.gradle').exists()) { apply from: 'addon.gradle' } +// File for local tweaks not commited to Git +if (file('addon.local.gradle.kts').exists()) { + apply from: 'addon.local.gradle.kts' +} else if (file('addon.local.gradle').exists()) { + apply from: 'addon.local.gradle' +} + // Allow unsafe repos but warn repositories.configureEach { repo -> if (repo instanceof org.gradle.api.artifacts.repositories.UrlArtifactRepository) { @@ -479,7 +514,14 @@ repositories.configureEach { repo -> } } -apply from: 'repositories.gradle' +if (file('repositories.gradle.kts').exists()) { + apply from: 'repositories.gradle.kts' +} else if (file('repositories.gradle').exists()) { + apply from: 'repositories.gradle' +} else { + logger.error("Neither repositories.gradle.kts nor repositories.gradle was found, make sure you extracted the full ExampleMod template.") + throw new RuntimeException("Missing repositories.gradle[.kts]") +} configurations { runtimeClasspath.extendsFrom(runtimeOnlyNonPublishable) @@ -520,9 +562,6 @@ repositories { maven { name 'Overmind forge repo mirror' url 'https://gregtech.overminddl1.com/' - mavenContent { - excludeGroup("net.minecraftforge") // missing the `universal` artefact - } } maven { name = "GTNH Maven" @@ -537,13 +576,28 @@ repositories { } } if (includeWellKnownRepositories.toBoolean()) { - maven { - name "CurseMaven" - url "https://cursemaven.com" - content { + exclusiveContent { + forRepository { + maven { + name "CurseMaven" + url "https://cursemaven.com" + } + } + filter { includeGroup "curse.maven" } } + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } maven { name = "ic2" url = "https://maven.ic2.player.to/" @@ -574,6 +628,8 @@ def mixinProviderSpecNoClassifer = "${mixinProviderGroup}:${mixinProviderModule} def mixinProviderSpec = "${mixinProviderSpecNoClassifer}:dev" ext.mixinProviderSpec = mixinProviderSpec +def mixingConfigRefMap = 'mixins.' + modId + '.refmap.json' + dependencies { if (usesMixins.toBoolean()) { annotationProcessor('org.ow2.asm:asm-debug-all:5.0.3') @@ -585,7 +641,7 @@ dependencies { } } if (usesMixins.toBoolean()) { - implementation(mixinProviderSpec) + implementation(modUtils.enableMixins(mixinProviderSpec, mixingConfigRefMap)) } else if (forceEnableMixins.toBoolean()) { runtimeOnlyNonPublishable(mixinProviderSpec) } @@ -611,12 +667,32 @@ configurations.all { } } -apply from: 'dependencies.gradle' +dependencies { + constraints { + def minGtnhLibVersion = "0.0.13" + implementation("com.github.GTNewHorizons:GTNHLib:${minGtnhLibVersion}") { + because("fixes duplicate mod errors in java 17 configurations using old gtnhlib") + } + runtimeOnly("com.github.GTNewHorizons:GTNHLib:${minGtnhLibVersion}") { + because("fixes duplicate mod errors in java 17 configurations using old gtnhlib") + } + devOnlyNonPublishable("com.github.GTNewHorizons:GTNHLib:${minGtnhLibVersion}") { + because("fixes duplicate mod errors in java 17 configurations using old gtnhlib") + } + runtimeOnlyNonPublishable("com.github.GTNewHorizons:GTNHLib:${minGtnhLibVersion}") { + because("fixes duplicate mod errors in java 17 configurations using old gtnhlib") + } + } +} -def mixingConfigRefMap = 'mixins.' + modId + '.refmap.json' -def mixinTmpDir = buildDir.path + File.separator + 'tmp' + File.separator + 'mixins' -def refMap = "${mixinTmpDir}" + File.separator + mixingConfigRefMap -def mixinSrg = "${mixinTmpDir}" + File.separator + "mixins.srg" +if (file('dependencies.gradle.kts').exists()) { + apply from: 'dependencies.gradle.kts' +} else if (file('dependencies.gradle').exists()) { + apply from: 'dependencies.gradle' +} else { + logger.error("Neither dependencies.gradle.kts nor dependencies.gradle was found, make sure you extracted the full ExampleMod template.") + throw new RuntimeException("Missing dependencies.gradle[.kts]") +} tasks.register('generateAssets') { group = "GTNH Buildscript" @@ -648,46 +724,17 @@ tasks.register('generateAssets') { } if (usesMixins.toBoolean()) { - tasks.named("reobfJar", ReobfuscatedJar).configure { - extraSrgFiles.from(mixinSrg) - } - tasks.named("processResources").configure { dependsOn("generateAssets") } tasks.named("compileJava", JavaCompile).configure { - doFirst { - new File(mixinTmpDir).mkdirs() - } options.compilerArgs += [ - "-AreobfSrgFile=${tasks.reobfJar.srg.get().asFile}", - "-AoutSrgFile=${mixinSrg}", - "-AoutRefMapFile=${refMap}", // Elan: from what I understand they are just some linter configs so you get some warning on how to properly code "-XDenableSunApiLintControl", "-XDignore.symbol.file" ] } - - pluginManager.withPlugin('org.jetbrains.kotlin.kapt') { - kapt { - correctErrorTypes = true - javacOptions { - option("-AreobfSrgFile=${tasks.reobfJar.srg.get().asFile}") - option("-AoutSrgFile=$mixinSrg") - option("-AoutRefMapFile=$refMap") - } - } - tasks.configureEach { task -> - if (task.name == "kaptKotlin") { - task.doFirst { - new File(mixinTmpDir).mkdirs() - } - } - } - } - } tasks.named("processResources", ProcessResources).configure { @@ -705,7 +752,6 @@ tasks.named("processResources", ProcessResources).configure { } if (usesMixins.toBoolean()) { - from refMap dependsOn("compileJava", "compileScala") } } @@ -724,16 +770,16 @@ ext.java17PatchDependenciesCfg = configurations.create("java17PatchDependencies" } dependencies { - def lwjgl3ifyVersion = '1.3.5' + def lwjgl3ifyVersion = '1.4.0' def asmVersion = '9.4' if (modId != 'lwjgl3ify') { java17Dependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}") } if (modId != 'hodgepodge') { - java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.2.13') + java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.2.26') } - java17PatchDependencies('net.minecraft:launchwrapper:1.15') {transitive = false} + java17PatchDependencies('net.minecraft:launchwrapper:1.17.2') {transitive = false} java17PatchDependencies("org.ow2.asm:asm:${asmVersion}") java17PatchDependencies("org.ow2.asm:asm-commons:${asmVersion}") java17PatchDependencies("org.ow2.asm:asm-tree:${asmVersion}") @@ -979,6 +1025,9 @@ idea { } } runConfigurations { + "0. Build and Test"(Gradle) { + taskNames = ["build"] + } "1. Run Client"(Gradle) { taskNames = ["runClient"] } @@ -1098,6 +1147,14 @@ tasks.named("processIdeaSettings").configure { dependsOn("injectTags") } +tasks.named("ideVirtualMainClasses").configure { + // Make IntelliJ "Build project" build the mod jars + dependsOn("jar", "reobfJar") + if (!disableSpotless) { + dependsOn("spotlessCheck") + } +} + // workaround variable hiding in pom processing def projectConfigs = project.configurations @@ -1118,12 +1175,14 @@ publishing { } repositories { - maven { - url = "http://jenkins.usrv.eu:8081/nexus/content/repositories/releases" - allowInsecureProtocol = true - credentials { - username = System.getenv("MAVEN_USER") ?: "NONE" - password = System.getenv("MAVEN_PASSWORD") ?: "NONE" + if (usesMavenPublishing.toBoolean()) { + maven { + url = mavenPublishUrl + allowInsecureProtocol = mavenPublishUrl.startsWith("http://") // Mostly for the GTNH maven + credentials { + username = System.getenv("MAVEN_USER") ?: "NONE" + password = System.getenv("MAVEN_PASSWORD") ?: "NONE" + } } } } @@ -1238,7 +1297,7 @@ def addCurseForgeRelation(String type, String name) { // Updating -def buildscriptGradleVersion = "8.1.1" +def buildscriptGradleVersion = "8.2.1" tasks.named('wrapper', Wrapper).configure { gradleVersion = buildscriptGradleVersion @@ -1344,8 +1403,14 @@ boolean isNewBuildScriptVersionAvailable() { String currentBuildScript = getFile("build.gradle").getText() String currentBuildScriptHash = getVersionHash(currentBuildScript) - String availableBuildScript = availableBuildScriptUrl().newInputStream(parameters).getText() - String availableBuildScriptHash = getVersionHash(availableBuildScript) + String availableBuildScriptHash + try { + String availableBuildScript = availableBuildScriptUrl().newInputStream(parameters).getText() + availableBuildScriptHash = getVersionHash(availableBuildScript) + } catch (IOException e) { + logger.warn("Could not check for buildscript update availability: {}", e.message) + return false + } boolean isUpToDate = currentBuildScriptHash.empty || availableBuildScriptHash.empty || currentBuildScriptHash == availableBuildScriptHash return !isUpToDate @@ -1510,3 +1575,17 @@ def getSecondaryArtifacts() { if (apiPackage) secondaryArtifacts += [apiJar] return secondaryArtifacts } + +// For easier scripting of things that require variables defined earlier in the buildscript +if (file('addon.late.gradle.kts').exists()) { + apply from: 'addon.late.gradle.kts' +} else if (file('addon.late.gradle').exists()) { + apply from: 'addon.late.gradle' +} + +// File for local tweaks not commited to Git +if (file('addon.late.local.gradle.kts').exists()) { + apply from: 'addon.late.local.gradle.kts' +} else if (file('addon.late.local.gradle').exists()) { + apply from: 'addon.late.local.gradle' +} diff --git a/dependencies.gradle b/dependencies.gradle index a16ac5574..6478ae269 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,6 +2,9 @@ dependencies { compileOnly(sourceSets.compileStubs.output) compileStubs(sourceSets.compileStubsStubs.output) + + compileOnly("com.github.GTNewHorizons:ProjectRed:4.7.12-GTNH:dev") + compileOnly(files("dependencies/SmartRender-1.7.10-2.1-dev.jar")) runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.3.55-GTNH:dev") } diff --git a/dependencies/SmartRender-1.7.10-2.1-dev.jar b/dependencies/SmartRender-1.7.10-2.1-dev.jar new file mode 100644 index 000000000..b87371b3c Binary files /dev/null and b/dependencies/SmartRender-1.7.10-2.1-dev.jar differ diff --git a/gradle.properties b/gradle.properties index 7369aafe4..229caa031 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,7 +34,7 @@ enableModernJavaSyntax = true # Enables injecting missing generics into the decompiled source code for a better coding experience # Turns most publically visible List, Map, etc. into proper List, Map types -enableGenericInjection = false +enableGenericInjection = true # Define a source file of your project with: # public static final String VERSION = "GRADLETOKEN_VERSION"; @@ -42,10 +42,10 @@ enableGenericInjection = false # version in @Mod([...], version = VERSION, [...]) # Leave these properties empty to skip individual token replacements generateGradleTokenClass = com.gtnewhorizons.angelica.Tags -gradleTokenModId = MODID -gradleTokenModName = MODNAME +gradleTokenModId = +gradleTokenModName = gradleTokenVersion = VERSION -gradleTokenGroupName = GROUPNAME +gradleTokenGroupName = # [DEPRECATED] # Multiple source files can be defined here by providing a comma-seperated list: Class1.java,Class2.java,Class3.java # public static final String VERSION = "GRADLETOKEN_VERSION"; diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba771..c1962a79e 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 37aef8d3f..17a8ddce2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 79a61d421..aeb74cbb4 100755 --- a/gradlew +++ b/gradlew @@ -85,9 +85,6 @@ done APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/src/compileStubs/java/net/minecraft/client/model/ModelBase.java b/src/compileStubs/java/net/minecraft/client/model/ModelBase.java deleted file mode 100644 index f93858a41..000000000 --- a/src/compileStubs/java/net/minecraft/client/model/ModelBase.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.minecraft.client.model; - -import java.util.List; - -public class ModelBase { - - public List boxList; -} diff --git a/src/compileStubs/java/net/minecraft/client/renderer/WorldRenderer.java b/src/compileStubs/java/net/minecraft/client/renderer/WorldRenderer.java deleted file mode 100644 index fc8fcd67e..000000000 --- a/src/compileStubs/java/net/minecraft/client/renderer/WorldRenderer.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minecraft.client.renderer; - -import net.minecraft.client.renderer.culling.ICamera; - -public class WorldRenderer { - - public boolean isInFrustum; - - public boolean skipAllRenderPasses() { - return false; - } - - public void updateInFrustum(ICamera frustrum) {} -} diff --git a/src/compileStubs/java/net/minecraft/client/renderer/culling/Frustrum.java b/src/compileStubs/java/net/minecraft/client/renderer/culling/Frustrum.java deleted file mode 100644 index 1c7c3bb5d..000000000 --- a/src/compileStubs/java/net/minecraft/client/renderer/culling/Frustrum.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.minecraft.client.renderer.culling; - -public class Frustrum implements ICamera { - - public void setPosition(double x, double y, double z) {} -} diff --git a/src/compileStubs/java/net/minecraft/client/renderer/culling/ICamera.java b/src/compileStubs/java/net/minecraft/client/renderer/culling/ICamera.java deleted file mode 100644 index a114caf16..000000000 --- a/src/compileStubs/java/net/minecraft/client/renderer/culling/ICamera.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.minecraft.client.renderer.culling; - -public interface ICamera { -} diff --git a/src/compileStubs/java/net/minecraft/client/renderer/texture/AbstractTexture.java b/src/compileStubs/java/net/minecraft/client/renderer/texture/AbstractTexture.java index 0ae4a91d5..afd7ea1d3 100644 --- a/src/compileStubs/java/net/minecraft/client/renderer/texture/AbstractTexture.java +++ b/src/compileStubs/java/net/minecraft/client/renderer/texture/AbstractTexture.java @@ -5,13 +5,15 @@ import com.gtnewhorizons.angelica.client.MultiTexID; public abstract class AbstractTexture implements ITextureObject { public int glTextureId = -1; - public MultiTexID multiTex; + public MultiTexID angelica$multiTex; public int getGlTextureId() { return 0; } - public MultiTexID getMultiTexID() { + public void deleteGlTexture() {} + + public MultiTexID angelica$getMultiTexID() { return null; } } diff --git a/src/compileStubs/java/net/minecraft/client/renderer/texture/DynamicTexture.java b/src/compileStubs/java/net/minecraft/client/renderer/texture/DynamicTexture.java deleted file mode 100644 index 593f1aa72..000000000 --- a/src/compileStubs/java/net/minecraft/client/renderer/texture/DynamicTexture.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.minecraft.client.renderer.texture; - -public class DynamicTexture extends AbstractTexture { - - public DynamicTexture(int i, int i1) { - super(); - } - - public int[] getTextureData() { - return null; - } - - public void updateDynamicTexture() {} -} diff --git a/src/compileStubs/java/net/minecraft/client/renderer/texture/ITextureObject.java b/src/compileStubs/java/net/minecraft/client/renderer/texture/ITextureObject.java index 7553c634f..3749903ec 100644 --- a/src/compileStubs/java/net/minecraft/client/renderer/texture/ITextureObject.java +++ b/src/compileStubs/java/net/minecraft/client/renderer/texture/ITextureObject.java @@ -4,7 +4,7 @@ import com.gtnewhorizons.angelica.client.MultiTexID; public interface ITextureObject { - MultiTexID getMultiTexID(); + MultiTexID angelica$getMultiTexID(); int getGlTextureId(); } diff --git a/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureAtlasSprite.java b/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureAtlasSprite.java deleted file mode 100644 index b9fa17b36..000000000 --- a/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureAtlasSprite.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.minecraft.client.renderer.texture; - -public class TextureAtlasSprite { - - public boolean useAnisotropicFiltering; - - public void updateAnimation() {} -} diff --git a/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureMap.java b/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureMap.java index 1413c8129..b8e2a707c 100644 --- a/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureMap.java +++ b/src/compileStubs/java/net/minecraft/client/renderer/texture/TextureMap.java @@ -1,18 +1,24 @@ package net.minecraft.client.renderer.texture; +import net.minecraft.client.resources.IResourceManager; import net.minecraft.util.ResourceLocation; public class TextureMap extends AbstractTexture { public static ResourceLocation locationBlocksTexture; - public int atlasWidth; - public int atlasHeight; + + public int angelica$atlasWidth; + public int angelica$atlasHeight; + + public void loadTextureAtlas(IResourceManager p_110571_1_) {} + + public ResourceLocation completeResourceLocation(ResourceLocation p_147634_1_, int p_147634_2_) { + return null; + } + + public void updateAnimations() {} public int getTextureType() { return 0; } - - public ResourceLocation completeResourceLocation(ResourceLocation resourceLocation, int i) { - return null; - } } diff --git a/src/compileStubsStubs/java/net/minecraft/client/resources/IResourceManager.java b/src/compileStubsStubs/java/net/minecraft/client/resources/IResourceManager.java new file mode 100644 index 000000000..49577ca30 --- /dev/null +++ b/src/compileStubsStubs/java/net/minecraft/client/resources/IResourceManager.java @@ -0,0 +1,5 @@ +package net.minecraft.client.resources; + +public interface IResourceManager { + +} diff --git a/src/compileStubsStubs/java/net/minecraft/client/shader/TesselatorVertexState.java b/src/compileStubsStubs/java/net/minecraft/client/shader/TesselatorVertexState.java deleted file mode 100644 index 46330ab59..000000000 --- a/src/compileStubsStubs/java/net/minecraft/client/shader/TesselatorVertexState.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.minecraft.client.shader; - -public class TesselatorVertexState { -} diff --git a/src/compileStubsStubs/java/net/minecraft/util/ResourceLocation.java b/src/compileStubsStubs/java/net/minecraft/util/ResourceLocation.java index 84748c495..bb0f42125 100644 --- a/src/compileStubsStubs/java/net/minecraft/util/ResourceLocation.java +++ b/src/compileStubsStubs/java/net/minecraft/util/ResourceLocation.java @@ -1,4 +1,5 @@ package net.minecraft.util; public class ResourceLocation { + } diff --git a/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java b/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java index 81d821cd9..c15af07a2 100644 --- a/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java +++ b/src/main/java/com/gtnewhorizons/angelica/AngelicaMod.java @@ -6,7 +6,7 @@ import cpw.mods.fml.common.Mod; modid = "angelica", name = "Angelica", version = Tags.VERSION, - acceptedMinecraftVersions = "[1.7.10,)", + acceptedMinecraftVersions = "[1.7.10]", acceptableRemoteVersions = "*") public class AngelicaMod { } diff --git a/src/main/java/com/gtnewhorizons/angelica/client/DefaultTexture.java b/src/main/java/com/gtnewhorizons/angelica/client/DefaultTexture.java index 866c377c3..3dc99cdfc 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/DefaultTexture.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/DefaultTexture.java @@ -11,6 +11,6 @@ public class DefaultTexture extends AbstractTexture { public void loadTexture(IResourceManager resourcemanager) { int[] aint = ShadersTex.createAIntImage(1, 0xFFFFFFFF); - ShadersTex.setupTexture(this.getMultiTexID(), aint, 1, 1, false, false); + ShadersTex.setupTexture(this.angelica$getMultiTexID(), aint, 1, 1, false, false); } } diff --git a/src/main/java/com/gtnewhorizons/angelica/client/GuiShaders.java b/src/main/java/com/gtnewhorizons/angelica/client/GuiShaders.java index 7e212e17b..f707b25b8 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/GuiShaders.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/GuiShaders.java @@ -12,6 +12,8 @@ import net.minecraft.client.settings.GameSettings; import org.lwjgl.Sys; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; + public class GuiShaders extends GuiScreen { /** This GUI's parent GUI. */ @@ -50,7 +52,7 @@ public class GuiShaders extends GuiScreen { */ public void initGui() { if (Shaders.shadersConfig == null) Shaders.loadConfig(); - List buttonList = this.buttonList; + List buttonList = this.buttonList; int width = this.width; int height = this.height; buttonList.add( @@ -60,7 +62,7 @@ public class GuiShaders extends GuiScreen { 30, 160, 18, - "NormapMap: " + toStringOnOff(Shaders.configNormalMap))); + "NormalMap: " + toStringOnOff(Shaders.configNormalMap))); buttonList.add( new GuiButton( 18, @@ -290,7 +292,7 @@ public class GuiShaders extends GuiScreen { boolean var8 = false; try { - Class var3 = Class.forName("java.awt.Desktop"); + Class var3 = Class.forName("java.awt.Desktop"); Object var4 = var3.getMethod("getDesktop", new Class[0]).invoke((Object) null, new Object[0]); var3.getMethod("browse", new Class[] { URI.class }).invoke( var4, @@ -301,13 +303,12 @@ public class GuiShaders extends GuiScreen { } if (var8) { - System.out.println("Opening via system class!"); + AngelicaTweaker.LOGGER.debug("Opening via system class!"); Sys.openURL("file://" + Shaders.shaderpacksdir.getAbsolutePath()); } break; case 6: /* Done */ - File confshader = new File(Shaders.shadersdir, "current.cfg"); try { Shaders.storeConfig(); } catch (Exception ex) {} diff --git a/src/main/java/com/gtnewhorizons/angelica/client/GuiSlotShaders.java b/src/main/java/com/gtnewhorizons/angelica/client/GuiSlotShaders.java index 00537faf8..8f3c33a16 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/GuiSlotShaders.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/GuiSlotShaders.java @@ -1,13 +1,13 @@ package com.gtnewhorizons.angelica.client; -import java.util.ArrayList; +import java.util.List; import net.minecraft.client.gui.GuiSlot; import net.minecraft.client.renderer.Tessellator; class GuiSlotShaders extends GuiSlot { - private ArrayList shaderslist; + private List shaderslist; final GuiShaders shadersGui; diff --git a/src/main/java/com/gtnewhorizons/angelica/client/Shaders.java b/src/main/java/com/gtnewhorizons/angelica/client/Shaders.java index 4567a19aa..3728a27b1 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/Shaders.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/Shaders.java @@ -151,6 +151,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Properties; import java.util.regex.Matcher; @@ -184,14 +185,15 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import org.lwjgl.opengl.GLContext; -import com.gtnewhorizons.angelica.mixins.early.accessors.RendererEntityLivingAccessor; +import com.gtnewhorizons.angelica.Tags; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; import com.gtnewhorizons.angelica.mixins.interfaces.IModelRenderer; // import org.lwjgl.opengl.ARBVertexProgram; public class Shaders { - public static final String versionString = "2.3.18"; + public static final String versionString = Tags.VERSION; public static final int versionNumber = 0x020312; public static final int buildNumber = 53; @@ -609,11 +611,11 @@ public class Shaders { */ public static void loadConfig() { - System.out.println("[Shaders] Loading configuration."); + AngelicaTweaker.LOGGER.info("[Shaders] Loading configuration."); try { if (!shaderpacksdir.exists()) shaderpacksdir.mkdir(); } catch (Exception e) { - System.err.println("[Shaders] Failed openning shaderpacks directory."); + AngelicaTweaker.LOGGER.warn("[Shaders] Failed openning shaderpacks directory."); } shadersConfig = new Properties(); @@ -631,7 +633,6 @@ public class Shaders { storeConfig(); } catch (Exception e) {} } - String value = null; configNormalMap = Boolean.parseBoolean(shadersConfig.getProperty("normalMapEnabled", "true")); configSpecularMap = Boolean.parseBoolean(shadersConfig.getProperty("specularMapEnabled", "true")); configTweakBlockDamage = Boolean.parseBoolean( @@ -655,7 +656,7 @@ public class Shaders { } public static void storeConfig() { - System.out.println("[Shaders] Save configuration."); + AngelicaTweaker.LOGGER.info("[Shaders] Save configuration."); shadersConfig.setProperty("normalMapEnabled", Boolean.toString(configNormalMap)); shadersConfig.setProperty("specularMapEnabled", Boolean.toString(configSpecularMap)); shadersConfig.setProperty("tweakBlockDamage", Boolean.toString(configTweakBlockDamage)); @@ -705,9 +706,9 @@ public class Shaders { } } if (shaderPack != null) { - System.out.println("[Shaders] Loaded shaderpack."); + AngelicaTweaker.LOGGER.info("[Shaders] Loaded shaderpack."); } else { - System.out.println("[Shaders] Did not load shaderpack."); + AngelicaTweaker.LOGGER.error("[Shaders] Did not load shaderpack."); shaderPack = new ShaderPackNone(); } } @@ -831,8 +832,8 @@ public class Shaders { // else System.out.println("[Shaders] Shader loaded: " + currentshadername); // } - static ArrayList listofShaders() { - ArrayList list = new ArrayList(); + static List listofShaders() { + List list = new ArrayList<>(); list.add(packNameNone); list.add(packNameDefault); try { @@ -872,7 +873,7 @@ public class Shaders { public static int checkFramebufferStatus(String location) { int status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); if (status != GL_FRAMEBUFFER_COMPLETE_EXT) - System.err.format("FramebufferStatus 0x%04X at %s\n", status, location); + AngelicaTweaker.LOGGER.error(String.format("FramebufferStatus 0x%04X at %s", status, location)); return status; } @@ -890,14 +891,16 @@ public class Shaders { if (!skipPrint) { if (errorCode == GL_INVALID_FRAMEBUFFER_OPERATION_EXT) { int status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - System.err.format( - "GL error 0x%04X: %s (Fb status 0x%04X) at %s\n", - errorCode, - gluErrorString(errorCode), - status, - location); + AngelicaTweaker.LOGGER.error( + String.format( + "GL error 0x%04X: %s (Fb status 0x%04X) at %s", + errorCode, + gluErrorString(errorCode), + status, + location)); } else { - System.err.format("GL error 0x%04X: %s at %s\n", errorCode, gluErrorString(errorCode), location); + AngelicaTweaker.LOGGER.error( + String.format("GL error 0x%04X: %s at %s", errorCode, gluErrorString(errorCode), location)); } } } @@ -907,7 +910,13 @@ public class Shaders { public static int checkGLError(String location, String info) { int errorCode = glGetError(); if (errorCode != GL_NO_ERROR) { - System.err.format("GL error 0x%04x: %s at %s %s\n", errorCode, gluErrorString(errorCode), location, info); + AngelicaTweaker.LOGGER.error( + String.format( + "GL error 0x%04x: %s at %s %s", + errorCode, + gluErrorString(errorCode), + location, + info)); } return errorCode; } @@ -915,20 +924,21 @@ public class Shaders { public static int checkGLError(String location, String info1, String info2) { int errorCode = glGetError(); if (errorCode != GL_NO_ERROR) { - System.err.format( - "GL error 0x%04x: %s at %s %s %s\n", - errorCode, - gluErrorString(errorCode), - location, - info1, - info2); + AngelicaTweaker.LOGGER.error( + String.format( + "GL error 0x%04x: %s at %s %s %s", + errorCode, + gluErrorString(errorCode), + location, + info1, + info2)); } return errorCode; } private static String printChatAndLogError(String str) { mc.ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(str)); - System.err.println(str); + AngelicaTweaker.LOGGER.error(str); return str; } @@ -938,12 +948,12 @@ public class Shaders { .append(buf.capacity()).append(" :"); for (int lim = buf.limit(), i = 0; i < lim; ++i) sb.append(" ").append(buf.get(i)); sb.append("]"); - System.out.println(sb); + AngelicaTweaker.LOGGER.debug(sb.toString()); } public static void startup(Minecraft mc) { Shaders.mc = mc; - System.out.println("ShadersMod version " + versionString); + AngelicaTweaker.LOGGER.info("Angelica version " + versionString); Shaders.loadConfig(); } @@ -968,7 +978,7 @@ public class Shaders { mc = Minecraft.getMinecraft(); checkGLError("Shaders.init pre"); capabilities = GLContext.getCapabilities(); - System.out.println( + AngelicaTweaker.LOGGER.debug( "[Shaders] OpenGL 2.0 = " + toStringYN(capabilities.OpenGL20) + " 2.1 = " + toStringYN(capabilities.OpenGL21) @@ -996,9 +1006,10 @@ public class Shaders { int maxDrawBuffers = glGetInteger(GL_MAX_DRAW_BUFFERS); int maxColorAttach = glGetInteger(GL_MAX_COLOR_ATTACHMENTS_EXT); - System.out.println("[Shaders] GL_MAX_DRAW_BUFFERS = " + maxDrawBuffers); - System.out.println("[Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT = " + maxColorAttach); - System.out.println("[Shaders] GL_MAX_TEXTURE_IMAGE_UNITS = " + glGetInteger(GL_MAX_TEXTURE_IMAGE_UNITS)); + AngelicaTweaker.LOGGER.debug("[Shaders] GL_MAX_DRAW_BUFFERS = " + maxDrawBuffers); + AngelicaTweaker.LOGGER.debug("[Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT = " + maxColorAttach); + AngelicaTweaker.LOGGER + .debug("[Shaders] GL_MAX_TEXTURE_IMAGE_UNITS = " + glGetInteger(GL_MAX_TEXTURE_IMAGE_UNITS)); usedColorBuffers = 4; usedDepthBuffers = 1; @@ -1046,7 +1057,7 @@ public class Shaders { } } - Map drawBuffersMap = new HashMap(); + Map drawBuffersMap = new HashMap<>(); for (int p = 0; p < ProgramCount; ++p) { if (p == ProgramFinal) { programsDrawBuffers[p] = null; @@ -1185,7 +1196,7 @@ public class Shaders { public static void resetDisplayList() { ++numberResetDisplayList; - System.out.println("Reset model renderers"); + AngelicaTweaker.LOGGER.debug("Reset model renderers"); if (Shaders.useMidTexCoordAttrib || Shaders.useMultiTexCoord3Attrib) { Iterator it = RenderManager.instance.entityRenderMap.values().iterator(); while (it.hasNext()) { @@ -1193,29 +1204,29 @@ public class Shaders { if (ren instanceof RendererLivingEntity) { RendererLivingEntity rle = (RendererLivingEntity) ren; // System.out.format("Reset %s\n", rle.toString()); - resetDisplayListModel(((RendererEntityLivingAccessor) rle).getMainModel()); - resetDisplayListModel(((RendererEntityLivingAccessor) rle).getRenderPassModel()); + resetDisplayListModel(rle.mainModel); + resetDisplayListModel(rle.renderPassModel); } } } - System.out.println("Reset world renderers"); + AngelicaTweaker.LOGGER.debug("Reset world renderers"); mc.renderGlobal.loadRenderers(); } public static void resetDisplayListModel(ModelBase mbase) { if (mbase != null) { - Iterator it = mbase.boxList.iterator(); + Iterator it = mbase.boxList.iterator(); while (it.hasNext()) { - Object obj = it.next(); - if (obj instanceof ModelRenderer) { - resetDisplayListModelRenderer((ModelRenderer) obj); + ModelRenderer obj = it.next(); + if (obj != null) { + resetDisplayListModelRenderer(obj); } } } } public static void resetDisplayListModelRenderer(ModelRenderer mrr) { - ((IModelRenderer) mrr).resetDisplayList(); + ((IModelRenderer) mrr).angelica$resetDisplayList(); // if (mrr.compiled) // { // GLAllocation.deleteDisplayLists(mrr.displayList); @@ -1359,7 +1370,7 @@ public class Shaders { printLogInfo(programid, vShaderPath + "," + fShaderPath); int valid = glGetProgrami(programid, GL_VALIDATE_STATUS); if (valid == GL_TRUE) { - System.out.println("Program " + programNames[program] + " loaded"); + AngelicaTweaker.LOGGER.debug("Program " + programNames[program] + " loaded"); } else { printChatAndLogError("[Shaders] Error : Invalid program " + programNames[program]); glDeleteObjectARB(programid); @@ -1528,129 +1539,129 @@ public class Shaders { // Shadow resolution } else if (line.matches("/\\* SHADOWRES:[0-9]+ \\*/.*")) { String[] parts = line.split("(:| )", 4); - System.out.println("Shadow map resolution: " + parts[2]); + AngelicaTweaker.LOGGER.debug("Shadow map resolution: " + parts[2]); spShadowMapWidth = spShadowMapHeight = Integer.parseInt(parts[2]); shadowMapWidth = shadowMapHeight = Math.round(spShadowMapWidth * configShadowResMul); } else if (line.matches("[ \t]*const[ \t]*int[ \t]*shadowMapResolution[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Shadow map resolution: " + parts[1]); + AngelicaTweaker.LOGGER.debug("Shadow map resolution: " + parts[1]); spShadowMapWidth = spShadowMapHeight = Integer.parseInt(parts[1]); shadowMapWidth = shadowMapHeight = Math.round(spShadowMapWidth * configShadowResMul); } else if (line.matches("/\\* SHADOWFOV:[0-9\\.]+ \\*/.*")) { String[] parts = line.split("(:| )", 4); - System.out.println("Shadow map field of view: " + parts[2]); + AngelicaTweaker.LOGGER.debug("Shadow map field of view: " + parts[2]); shadowMapFOV = Float.parseFloat(parts[2]); shadowMapIsOrtho = false; // Shadow distance } else if (line.matches("/\\* SHADOWHPL:[0-9\\.]+ \\*/.*")) { String[] parts = line.split("(:| )", 4); - System.out.println("Shadow map half-plane: " + parts[2]); + AngelicaTweaker.LOGGER.debug("Shadow map half-plane: " + parts[2]); shadowMapHalfPlane = Float.parseFloat(parts[2]); shadowMapIsOrtho = true; } else if (line.matches("[ \t]*const[ \t]*float[ \t]*shadowDistance[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Shadow map distance: " + parts[1]); + AngelicaTweaker.LOGGER.debug("Shadow map distance: " + parts[1]); shadowMapHalfPlane = Float.parseFloat(parts[1]); shadowMapIsOrtho = true; } else if (line.matches("[ \t]*const[ \t]*float[ \t]*shadowIntervalSize[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Shadow map interval size: " + parts[1]); + AngelicaTweaker.LOGGER.debug("Shadow map interval size: " + parts[1]); shadowIntervalSize = Float.parseFloat(parts[1]); } else if (line.matches("[ \t]*const[ \t]*bool[ \t]*generateShadowMipmap[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("Generate shadow mipmap"); + AngelicaTweaker.LOGGER.debug("Generate shadow mipmap"); Arrays.fill(shadowMipmapEnabled, true); } else if (line.matches("[ \t]*const[ \t]*bool[ \t]*generateShadowColorMipmap[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("Generate shadow color mipmap"); + AngelicaTweaker.LOGGER.debug("Generate shadow color mipmap"); Arrays.fill(shadowColorMipmapEnabled, true); } else if (line.matches("[ \t]*const[ \t]*bool[ \t]*shadowHardwareFiltering[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("Hardware shadow filtering enabled."); + AngelicaTweaker.LOGGER.debug("Hardware shadow filtering enabled."); Arrays.fill(shadowHardwareFilteringEnabled, true); } else if (line.matches("[ \t]*const[ \t]*bool[ \t]*shadowHardwareFiltering0[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowHardwareFiltering0"); + AngelicaTweaker.LOGGER.debug("shadowHardwareFiltering0"); shadowHardwareFilteringEnabled[0] = true; } else if (line.matches("[ \t]*const[ \t]*bool[ \t]*shadowHardwareFiltering1[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowHardwareFiltering1"); + AngelicaTweaker.LOGGER.debug("shadowHardwareFiltering1"); shadowHardwareFilteringEnabled[1] = true; } else if (line .matches("[ \t]*const[ \t]*bool[ \t]*(shadowtex0Mipmap|shadowtexMipmap)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowtex0Mipmap"); + AngelicaTweaker.LOGGER.debug("shadowtex0Mipmap"); shadowMipmapEnabled[0] = true; } else if (line.matches("[ \t]*const[ \t]*bool[ \t]*(shadowtex1Mipmap)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowtex1Mipmap"); + AngelicaTweaker.LOGGER.debug("shadowtex1Mipmap"); shadowMipmapEnabled[1] = true; } else if (line.matches( "[ \t]*const[ \t]*bool[ \t]*(shadowcolor0Mipmap|shadowColor0Mipmap)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowcolor0Mipmap"); + AngelicaTweaker.LOGGER.debug("shadowcolor0Mipmap"); shadowColorMipmapEnabled[0] = true; } else if (line.matches( "[ \t]*const[ \t]*bool[ \t]*(shadowcolor1Mipmap|shadowColor1Mipmap)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowcolor1Mipmap"); + AngelicaTweaker.LOGGER.debug("shadowcolor1Mipmap"); shadowColorMipmapEnabled[1] = true; } else if (line.matches( "[ \t]*const[ \t]*bool[ \t]*(shadowtex0Nearest|shadowtexNearest|shadow0MinMagNearest)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowtex0Nearest"); + AngelicaTweaker.LOGGER.debug("shadowtex0Nearest"); shadowFilterNearest[0] = true; } else if (line.matches( "[ \t]*const[ \t]*bool[ \t]*(shadowtex1Nearest|shadow1MinMagNearest)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowtex1Nearest"); + AngelicaTweaker.LOGGER.debug("shadowtex1Nearest"); shadowFilterNearest[1] = true; } else if (line.matches( "[ \t]*const[ \t]*bool[ \t]*(shadowcolor0Nearest|shadowColor0Nearest|shadowColor0MinMagNearest)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowcolor0Nearest"); + AngelicaTweaker.LOGGER.debug("shadowcolor0Nearest"); shadowColorFilterNearest[0] = true; } else if (line.matches( "[ \t]*const[ \t]*bool[ \t]*(shadowcolor1Nearest|shadowColor1Nearest|shadowColor1MinMagNearest)[ \t]*=[ \t]*true[ \t]*;.*")) { - System.out.println("shadowcolor1Nearest"); + AngelicaTweaker.LOGGER.debug("shadowcolor1Nearest"); shadowColorFilterNearest[1] = true; // Wetness half life } else if (line.matches("/\\* WETNESSHL:[0-9\\.]+ \\*/.*")) { String[] parts = line.split("(:| )", 4); - System.out.println("Wetness halflife: " + parts[2]); + AngelicaTweaker.LOGGER.debug("Wetness halflife: " + parts[2]); wetnessHalfLife = Float.parseFloat(parts[2]); } else if (line.matches( "[ \t]*const[ \t]*float[ \t]*wetnessHalflife[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Wetness halflife: " + parts[1]); + AngelicaTweaker.LOGGER.debug("Wetness halflife: " + parts[1]); wetnessHalfLife = Float.parseFloat(parts[1]); // Dryness halflife } else if (line.matches("/\\* DRYNESSHL:[0-9\\.]+ \\*/.*")) { String[] parts = line.split("(:| )", 4); - System.out.println("Dryness halflife: " + parts[2]); + AngelicaTweaker.LOGGER.debug("Dryness halflife: " + parts[2]); drynessHalfLife = Float.parseFloat(parts[2]); } else if (line.matches( "[ \t]*const[ \t]*float[ \t]*drynessHalflife[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Dryness halflife: " + parts[1]); + AngelicaTweaker.LOGGER.debug("Dryness halflife: " + parts[1]); drynessHalfLife = Float.parseFloat(parts[1]); // Eye brightness halflife @@ -1658,7 +1669,8 @@ public class Shaders { if (line.matches( "[ \t]*const[ \t]*float[ \t]*eyeBrightnessHalflife[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Eye brightness halflife: " + parts[1]); + AngelicaTweaker.LOGGER + .debug("Eye brightness halflife: " + parts[1]); eyeBrightnessHalflife = Float.parseFloat(parts[1]); // Center depth halflife @@ -1666,7 +1678,8 @@ public class Shaders { if (line.matches( "[ \t]*const[ \t]*float[ \t]*centerDepthHalflife[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Center depth halflife: " + parts[1]); + AngelicaTweaker.LOGGER + .debug("Center depth halflife: " + parts[1]); centerDepthSmoothHalflife = Float.parseFloat(parts[1]); // Sun path rotation @@ -1674,7 +1687,8 @@ public class Shaders { if (line.matches( "[ \t]*const[ \t]*float[ \t]*sunPathRotation[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Sun path rotation: " + parts[1]); + AngelicaTweaker.LOGGER + .debug("Sun path rotation: " + parts[1]); sunPathRotation = Float.parseFloat(parts[1]); // Ambient occlusion level @@ -1682,7 +1696,8 @@ public class Shaders { if (line.matches( "[ \t]*const[ \t]*float[ \t]*ambientOcclusionLevel[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("AO Level: " + parts[1]); + AngelicaTweaker.LOGGER + .debug("AO Level: " + parts[1]); aoLevel = Float.parseFloat(parts[1]); blockAoLight = 1.0f - aoLevel; @@ -1693,7 +1708,7 @@ public class Shaders { String[] parts = line.split("(=[ \t]*|;)"); int ssaa = Integer.parseInt(parts[1]); if (ssaa > 1) { - System.out.println( + AngelicaTweaker.LOGGER.debug( "Super sampling level: " + ssaa + "x"); superSamplingLevel = ssaa; @@ -1706,8 +1721,9 @@ public class Shaders { if (line.matches( "[ \t]*const[ \t]*int[ \t]*noiseTextureResolution[ \t]*=[ \t]*-?[0-9.]+f?;.*")) { String[] parts = line.split("(=[ \t]*|;)"); - System.out.println("Noise texture enabled"); - System.out.println( + AngelicaTweaker.LOGGER + .debug("Noise texture enabled"); + AngelicaTweaker.LOGGER.debug( "Noise texture resolution: " + parts[1]); noiseTextureResolution = Integer @@ -1728,8 +1744,8 @@ public class Shaders { value); if (bufferindex >= 0 && format != 0) { gbuffersFormat[bufferindex] = format; - System.out.format( - "%s format: %s\n", + AngelicaTweaker.LOGGER.debug( + "{} format: {}", name, value); } @@ -1737,20 +1753,21 @@ public class Shaders { } else if (line.matches( "/\\* GAUX4FORMAT:RGBA32F \\*/.*")) { - System.out.println( + AngelicaTweaker.LOGGER.debug( "gaux4 format : RGB32AF"); gbuffersFormat[7] = GL_RGBA32F; } else if (line.matches( "/\\* GAUX4FORMAT:RGB32F \\*/.*")) { - System.out.println( + AngelicaTweaker.LOGGER.debug( "gaux4 format : RGB32F"); gbuffersFormat[7] = GL_RGB32F; } else if (line.matches( "/\\* GAUX4FORMAT:RGB16 \\*/.*")) { - System.out.println( - "gaux4 format : RGB16"); + AngelicaTweaker.LOGGER + .debug( + "gaux4 format : RGB16"); gbuffersFormat[7] = GL_RGB16; // Mipmap stuff @@ -1776,9 +1793,9 @@ public class Shaders { >= 0) { newCompositeMipmapSetting |= (1 << bufferindex); - System.out - .format( - "%s mipmap enabled for %s\n", + AngelicaTweaker.LOGGER + .debug( + "{} mipmap enabled for {}", name, filename); } @@ -1807,7 +1824,7 @@ public class Shaders { infoLog.get(infoBytes); if (infoBytes[length - 1] == 0) infoBytes[length - 1] = 10; String out = new String(infoBytes); - System.out.println("Info log: " + name + "\n" + out); + AngelicaTweaker.LOGGER.info("Info log: " + name + "\n" + out); return false; } return true; @@ -2146,7 +2163,7 @@ public class Shaders { noiseTexture = null; } - System.out.println("UNINIT"); + AngelicaTweaker.LOGGER.trace("UNINIT"); shadowPassInterval = 0; shouldSkipDefaultShadow = false; @@ -2287,7 +2304,7 @@ public class Shaders { if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { printChatAndLogError("Failed creating framebuffer! (Status " + status + ")"); } else { - System.out.println("Framebuffer created."); + AngelicaTweaker.LOGGER.debug("Framebuffer created."); } } @@ -2376,7 +2393,7 @@ public class Shaders { if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { printChatAndLogError("Failed creating shadow framebuffer! (Status " + status + ")"); } else { - System.out.println("Shadow framebuffer created."); + AngelicaTweaker.LOGGER.debug("Shadow framebuffer created."); } } @@ -2625,7 +2642,7 @@ public class Shaders { glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, dfb); GL11.glViewport(0, 0, Shaders.renderWidth, Shaders.renderHeight); activeDrawBuffers = null; - ShadersTex.bindNSTextures(defaultTexture.getMultiTexID()); + ShadersTex.bindNSTextures(defaultTexture.angelica$getMultiTexID()); useProgram(ProgramTextured); checkGLError("end beginRender"); @@ -3354,7 +3371,7 @@ public class Shaders { if (isRenderingWorld) { checkGLError("endBlockEntities"); useProgram(lightmapEnabled ? ProgramTexturedLit : ProgramTextured); - ShadersTex.bindNSTextures(defaultTexture.getMultiTexID()); + ShadersTex.bindNSTextures(defaultTexture.angelica$getMultiTexID()); } } @@ -3478,7 +3495,7 @@ public class Shaders { checkGLError("copy depth"); glActiveTexture(GL_TEXTURE0); } - ShadersTex.bindNSTextures(defaultTexture.getMultiTexID()); // flat + ShadersTex.bindNSTextures(defaultTexture.angelica$getMultiTexID()); // flat } } @@ -3753,14 +3770,14 @@ public class Shaders { public static void pushEntity(Block block) { entityDataIndex++; - entityData[entityDataIndex * 2] = (block.blockRegistry.getIDForObject(block) & 0xFFFF) + entityData[entityDataIndex * 2] = (Block.blockRegistry.getIDForObject(block) & 0xFFFF) | (block.getRenderType() << 16); entityData[entityDataIndex * 2 + 1] = 0; } public static void pushEntity(RenderBlocks rb, Block block, int x, int y, int z) { entityDataIndex++; - entityData[entityDataIndex * 2] = (block.blockRegistry.getIDForObject(block) & 0xFFFF) + entityData[entityDataIndex * 2] = (Block.blockRegistry.getIDForObject(block) & 0xFFFF) | (block.getRenderType() << 16); entityData[entityDataIndex * 2 + 1] = rb.blockAccess.getBlockMetadata(x, y, z); } diff --git a/src/main/java/com/gtnewhorizons/angelica/client/ShadersRender.java b/src/main/java/com/gtnewhorizons/angelica/client/ShadersRender.java index 0deb8c572..e5c81a8b9 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/ShadersRender.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/ShadersRender.java @@ -14,8 +14,6 @@ import net.minecraft.item.ItemBlock; import org.lwjgl.opengl.GL11; -import com.gtnewhorizons.angelica.mixins.early.accessors.WorldRenderersAccessor; - public class ShadersRender { public static void setFrustrumPosition(Frustrum frustrum, double x, double y, double z) { @@ -24,7 +22,7 @@ public class ShadersRender { public static void clipRenderersByFrustrum(RenderGlobal renderGlobal, Frustrum frustrum, float par2) { Shaders.checkGLError("pre clip"); - WorldRenderer[] worldRenderers = ((WorldRenderersAccessor) renderGlobal).getWorldRenderers(); + WorldRenderer[] worldRenderers = renderGlobal.worldRenderers; if (!Shaders.isShadowPass) { for (WorldRenderer worldRenderer : worldRenderers) { if (!worldRenderer.skipAllRenderPasses()) { diff --git a/src/main/java/com/gtnewhorizons/angelica/client/ShadersTess.java b/src/main/java/com/gtnewhorizons/angelica/client/ShadersTess.java index 0cda7ff4d..76c0d96b4 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/ShadersTess.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/ShadersTess.java @@ -14,8 +14,8 @@ import net.minecraft.client.renderer.Tessellator; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; import com.gtnewhorizons.angelica.mixins.interfaces.TessellatorAccessor; -import com.gtnewhorizons.angelica.transform.ALog; public class ShadersTess { @@ -28,7 +28,7 @@ public class ShadersTess { } else { tess.isDrawing = false; if (tess.drawMode == GL11.GL_QUADS && tess.vertexCount % 4 != 0) { - ALog.warning("%s", "bad vertexCount"); + AngelicaTweaker.LOGGER.warn("%s", "bad vertexCount"); } int voffset = 0; int realDrawMode = tess.drawMode; @@ -36,40 +36,40 @@ public class ShadersTess { int vcount; vcount = Math.min( tess.vertexCount - voffset, - tessa.getAngelica$byteBuffer().capacity() / (vertexStride * 4)); + tessa.angelica$getByteBuffer().capacity() / (vertexStride * 4)); if (realDrawMode == GL11.GL_QUADS) vcount = vcount / 4 * 4; - tessa.getAngelica$floatBuffer().clear(); - tessa.getAngelica$shortBuffer().clear(); - tessa.getAngelica$intBuffer().clear(); - tessa.getAngelica$intBuffer().put(tess.rawBuffer, voffset * vertexStride, vcount * vertexStride); - tessa.getAngelica$byteBuffer().position(0); - tessa.getAngelica$byteBuffer().limit(vcount * (vertexStride * 4)); + tessa.angelica$getFloatBuffer().clear(); + tessa.angelica$getShortBuffer().clear(); + tessa.angelica$getIntBuffer().clear(); + tessa.angelica$getIntBuffer().put(tess.rawBuffer, voffset * vertexStride, vcount * vertexStride); + tessa.angelica$getByteBuffer().position(0); + tessa.angelica$getByteBuffer().limit(vcount * (vertexStride * 4)); voffset += vcount; if (tess.hasTexture) { - tessa.getAngelica$floatBuffer().position(3); - GL11.glTexCoordPointer(2, (vertexStride * 4), tessa.getAngelica$floatBuffer()); + tessa.angelica$getFloatBuffer().position(3); + GL11.glTexCoordPointer(2, (vertexStride * 4), tessa.angelica$getFloatBuffer()); GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); } if (tess.hasBrightness) { OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit); - tessa.getAngelica$shortBuffer().position(6 * 2); - GL11.glTexCoordPointer(2, (vertexStride * 4), tessa.getAngelica$shortBuffer()); + tessa.angelica$getShortBuffer().position(6 * 2); + GL11.glTexCoordPointer(2, (vertexStride * 4), tessa.angelica$getShortBuffer()); GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit); } if (tess.hasColor) { - tessa.getAngelica$byteBuffer().position(5 * 4); - GL11.glColorPointer(4, true, (vertexStride * 4), tessa.getAngelica$byteBuffer()); + tessa.angelica$getByteBuffer().position(5 * 4); + GL11.glColorPointer(4, true, (vertexStride * 4), tessa.angelica$getByteBuffer()); GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); } if (tess.hasNormals) { - tessa.getAngelica$floatBuffer().position(9); - GL11.glNormalPointer((vertexStride * 4), tessa.getAngelica$floatBuffer()); + tessa.angelica$getFloatBuffer().position(9); + GL11.glNormalPointer((vertexStride * 4), tessa.angelica$getFloatBuffer()); GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY); } - tessa.getAngelica$floatBuffer().position(0); - GL11.glVertexPointer(3, (vertexStride * 4), tessa.getAngelica$floatBuffer()); + tessa.angelica$getFloatBuffer().position(0); + GL11.glVertexPointer(3, (vertexStride * 4), tessa.angelica$getFloatBuffer()); ShadersTess.preDrawArray(tess); GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); @@ -105,7 +105,7 @@ public class ShadersTess { // Shaders.checkGLError("preDrawArray"); if (Shaders.useMultiTexCoord3Attrib && tess.hasTexture) { GL13.glClientActiveTexture(GL13.GL_TEXTURE3); - GL11.glTexCoordPointer(2, (vertexStride * 4), (FloatBuffer) tessa.getAngelica$floatBuffer().position(12)); + GL11.glTexCoordPointer(2, (vertexStride * 4), (FloatBuffer) tessa.angelica$getFloatBuffer().position(12)); GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); GL13.glClientActiveTexture(GL13.GL_TEXTURE0); } @@ -115,7 +115,7 @@ public class ShadersTess { 2, false, vertexStride * 4, - (FloatBuffer) tessa.getAngelica$floatBuffer().position(12)); + (FloatBuffer) tessa.angelica$getFloatBuffer().position(12)); glEnableVertexAttribArrayARB(Shaders.midTexCoordAttrib); } if (Shaders.useEntityAttrib) { @@ -125,7 +125,7 @@ public class ShadersTess { false, false, vertexStride * 4, - (ShortBuffer) tessa.getAngelica$shortBuffer().position(7 * 2)); + (ShortBuffer) tessa.angelica$getShortBuffer().position(7 * 2)); glEnableVertexAttribArrayARB(Shaders.entityAttrib); } // Shaders.checkGLError("preDrawArray"); @@ -185,7 +185,7 @@ public class ShadersTess { // Expand tess.bufferSize *= 2; tess.rawBuffer = rawBuffer = Arrays.copyOf(tess.rawBuffer, tess.bufferSize); - System.out.format("Expand tesselator buffer %d\n", tess.bufferSize); + AngelicaTweaker.LOGGER.trace("Expand tesselator buffer {}", tess.bufferSize); } else { // Initialize tess.bufferSize = 0x10000; @@ -196,7 +196,7 @@ public class ShadersTess { // shaders mod calculate normal and mid UV if (tess.drawMode == 7) { int i = tess.addedVertices % 4; - float[] vertexPos = tessa.getAngelica$vertexPos(); + float[] vertexPos = tessa.angelica$getVertexPos(); vertexPos[i * 4 + 0] = fx; vertexPos[i * 4 + 1] = fy; vertexPos[i * 4 + 2] = fz; @@ -216,9 +216,9 @@ public class ShadersTess { float normalX = vnx * mult; float normalY = vny * mult; float normalZ = vnz * mult; - tessa.setAngelica$normalX(normalX); - tessa.setAngelica$normalY(normalY); - tessa.setAngelica$normalZ(normalZ); + tessa.angelica$setNormalX(normalX); + tessa.angelica$setNormalY(normalY); + tessa.angelica$setNormalZ(normalZ); rawBuffer[rbi + (9 - vertexStride * 3)] = rawBuffer[rbi + (9 - vertexStride * 2)] = rawBuffer[rbi + (9 - vertexStride * 1)] = Float.floatToRawIntBits(normalX); rawBuffer[rbi + (10 - vertexStride * 3)] = rawBuffer[rbi + (10 - vertexStride * 2)] = rawBuffer[rbi @@ -227,20 +227,20 @@ public class ShadersTess { + (11 - vertexStride * 1)] = Float.floatToRawIntBits(normalZ); tess.hasNormals = true; // mid UV - tessa.setAngelica$midTextureU( + tessa.angelica$setMidTextureU( (Float.intBitsToFloat(rawBuffer[rbi + (3 - vertexStride * 3)]) + Float.intBitsToFloat(rawBuffer[rbi + (3 - vertexStride * 2)]) + Float.intBitsToFloat(rawBuffer[rbi + (3 - vertexStride * 1)]) + (float) tess.textureU) / 4); - tessa.setAngelica$midTextureV( + tessa.angelica$setMidTextureV( (Float.intBitsToFloat(rawBuffer[rbi + (4 - vertexStride * 3)]) + Float.intBitsToFloat(rawBuffer[rbi + (4 - vertexStride * 2)]) + Float.intBitsToFloat(rawBuffer[rbi + (4 - vertexStride * 1)]) + (float) tess.textureV) / 4); rawBuffer[rbi + (12 - vertexStride * 3)] = rawBuffer[rbi + (12 - vertexStride * 2)] = rawBuffer[rbi - + (12 - vertexStride * 1)] = Float.floatToRawIntBits(tessa.getAngelica$midTextureU()); + + (12 - vertexStride * 1)] = Float.floatToRawIntBits(tessa.angelica$getMidTextureU()); rawBuffer[rbi + (13 - vertexStride * 3)] = rawBuffer[rbi + (13 - vertexStride * 2)] = rawBuffer[rbi - + (13 - vertexStride * 1)] = Float.floatToRawIntBits(tessa.getAngelica$midTextureV()); + + (13 - vertexStride * 1)] = Float.floatToRawIntBits(tessa.angelica$getMidTextureV()); } } // end normal and mid UV calculation @@ -255,11 +255,11 @@ public class ShadersTess { rawBuffer[rbi + 6] = tess.brightness; rawBuffer[rbi + 7] = Shaders.getEntityData(); rawBuffer[rbi + 8] = Shaders.getEntityData2(); - rawBuffer[rbi + 9] = Float.floatToRawIntBits((float) tessa.getAngelica$normalX()); - rawBuffer[rbi + 10] = Float.floatToRawIntBits((float) tessa.getAngelica$normalY()); - rawBuffer[rbi + 11] = Float.floatToRawIntBits((float) tessa.getAngelica$normalZ()); - rawBuffer[rbi + 12] = Float.floatToRawIntBits((float) tessa.getAngelica$midTextureU()); - rawBuffer[rbi + 13] = Float.floatToRawIntBits((float) ((TessellatorAccessor) tess).getAngelica$midTextureV()); + rawBuffer[rbi + 9] = Float.floatToRawIntBits((float) tessa.angelica$getNormalX()); + rawBuffer[rbi + 10] = Float.floatToRawIntBits((float) tessa.angelica$getNormalY()); + rawBuffer[rbi + 11] = Float.floatToRawIntBits((float) tessa.angelica$getNormalZ()); + rawBuffer[rbi + 12] = Float.floatToRawIntBits((float) tessa.angelica$getMidTextureU()); + rawBuffer[rbi + 13] = Float.floatToRawIntBits((float) ((TessellatorAccessor) tess).angelica$getMidTextureV()); tess.rawBufferIndex = rbi += vertexStride; ++tess.vertexCount; diff --git a/src/main/java/com/gtnewhorizons/angelica/client/ShadersTex.java b/src/main/java/com/gtnewhorizons/angelica/client/ShadersTex.java index 4727ef6c0..f2d0aa357 100644 --- a/src/main/java/com/gtnewhorizons/angelica/client/ShadersTex.java +++ b/src/main/java/com/gtnewhorizons/angelica/client/ShadersTex.java @@ -31,7 +31,8 @@ import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import org.lwjgl.opengl.GL13; -import org.lwjgl.opengl.GL30.*; + +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; public class ShadersTex { @@ -42,7 +43,7 @@ public class ShadersTex { public static final int defBaseTexColor = 0x00000000; public static final int defNormTexColor = 0xFF7F7FFF; public static final int defSpecTexColor = 0x00000000; - public static Map multiTexMap = new HashMap(); + public static Map multiTexMap = new HashMap<>(); public static TextureMap updatingTextureMap = null; public static TextureAtlasSprite updatingSprite = null; public static MultiTexID updatingTex = null; @@ -78,8 +79,8 @@ public class ShadersTex { } public static IntBuffer fillIntBuffer(int size, int value) { - int[] aint = getIntArray(size); - IntBuffer intBuf = getIntBuffer(size); + getIntArray(size); + getIntBuffer(size); Arrays.fill(intArray, 0, size, value); intBuffer.put(intArray, 0, size); return intBuffer; @@ -102,7 +103,7 @@ public class ShadersTex { } public static MultiTexID getMultiTexID(AbstractTexture tex) { - MultiTexID multiTex = tex.multiTex; + MultiTexID multiTex = tex.angelica$multiTex; if (multiTex == null) { int baseTex = tex.getGlTextureId(); multiTex = multiTexMap.get(Integer.valueOf(baseTex)); @@ -110,7 +111,7 @@ public class ShadersTex { multiTex = new MultiTexID(baseTex, GL11.glGenTextures(), GL11.glGenTextures()); multiTexMap.put(baseTex, multiTex); } - tex.multiTex = multiTex; + tex.angelica$multiTex = multiTex; } return multiTex; } @@ -121,14 +122,14 @@ public class ShadersTex { GL11.glDeleteTextures(texid); atex.glTextureId = -1; } - MultiTexID multiTex = atex.multiTex; + MultiTexID multiTex = atex.angelica$multiTex; if (multiTex != null) { - atex.multiTex = null; + atex.angelica$multiTex = null; multiTexMap.remove(Integer.valueOf(multiTex.base)); GL11.glDeleteTextures(multiTex.norm); GL11.glDeleteTextures(multiTex.spec); if (multiTex.base != texid) { - System.err.println("Error : MultiTexID.base mismatch."); + AngelicaTweaker.LOGGER.warn("Error : MultiTexID.base mismatch."); GL11.glDeleteTextures(multiTex.base); } } @@ -191,13 +192,13 @@ public class ShadersTex { public static void bindTexture(ITextureObject tex) { if (tex instanceof TextureMap) { - Shaders.atlasSizeX = ((TextureMap) tex).atlasWidth; - Shaders.atlasSizeY = ((TextureMap) tex).atlasHeight; + Shaders.atlasSizeX = ((TextureMap) tex).angelica$atlasWidth; + Shaders.atlasSizeY = ((TextureMap) tex).angelica$atlasHeight; } else { Shaders.atlasSizeX = 0; Shaders.atlasSizeY = 0; } - bindTextures(tex.getMultiTexID()); + bindTextures(tex.angelica$getMultiTexID()); } /** not used */ @@ -233,7 +234,7 @@ public class ShadersTex { // for Dynamic Texture public static void initDynamicTexture(int texID, int width, int height, DynamicTexture tex) { - MultiTexID multiTex = tex.getMultiTexID(); + MultiTexID multiTex = tex.angelica$getMultiTexID(); int[] aint = tex.getTextureData(); int size = width * height; Arrays.fill(aint, size, size * 2, defNormTexColor); @@ -279,12 +280,16 @@ public class ShadersTex { // for TextureMap public static void allocateTextureMap(int texID, int mipmapLevels, int width, int height, float anisotropy, Stitcher stitcher, TextureMap tex) { - System.out.println( - "allocateTextureMap " + tex - .getTextureType() + " " + mipmapLevels + " " + width + " " + height + " " + anisotropy + " "); + AngelicaTweaker.LOGGER.trace( + "allocateTextureMap {} {} {} {} {}", + tex.getTextureType(), + mipmapLevels, + width, + height, + anisotropy); updatingTextureMap = tex; - tex.atlasWidth = width; - tex.atlasHeight = height; + tex.angelica$atlasWidth = width; + tex.angelica$atlasHeight = height; MultiTexID multiTex = getMultiTexID(tex); updatingTex = multiTex; TextureUtil.allocateTextureImpl(multiTex.base, mipmapLevels, width, height, anisotropy); @@ -439,7 +444,6 @@ public class ShadersTex { } public static void genMipmapAlpha(int[] aint, int offset, int width, int height) { - int minwh = Math.min(width, height); int level; int w1, w2, h1, h2, o1, o2; w1 = w2 = width; @@ -491,7 +495,6 @@ public class ShadersTex { } public static void genMipmapSimple(int[] aint, int offset, int width, int height) { - int minwh = Math.min(width, height); int level; int w1, w2, h1, h2, o1, o2; w1 = w2 = width; @@ -642,7 +645,7 @@ public class ShadersTex { } public static void updateDynamicTexture(int texID, int[] src, int width, int height, DynamicTexture tex) { - MultiTexID multiTex = tex.getMultiTexID(); + MultiTexID multiTex = tex.angelica$getMultiTexID(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm); updateSubImage1(src, width, height, 0, 0, 1, defNormTexColor); GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec); @@ -664,9 +667,9 @@ public class ShadersTex { } // not used - public static void updateAnimationTextureMap(TextureMap tex, List tasList) { + public static void updateAnimationTextureMap(TextureMap tex, List tasList) { Iterator iterator; - MultiTexID multiTex = tex.getMultiTexID(); + MultiTexID multiTex = tex.angelica$getMultiTexID(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm); for (iterator = tasList.iterator(); iterator.hasNext();) { TextureAtlasSprite tas = iterator.next(); @@ -883,7 +886,7 @@ public class ShadersTex { | (((((color1 >>> 0) & 255) * factor1 + ((color2 >>> 0) & 255) * factor2) / 255) << 0); } - public static void loadLayeredTexture(LayeredTexture tex, IResourceManager manager, List list) { + public static void loadLayeredTexture(LayeredTexture tex, IResourceManager manager, List list) { int width = 0; int height = 0; int size = 0; @@ -919,7 +922,7 @@ public class ShadersTex { } } // init and upload - setupTexture(tex.getMultiTexID(), image, width, height, false, false); + setupTexture(tex.angelica$getMultiTexID(), image, width, height, false, false); } /* update block texture filter +/- items texture */ @@ -927,7 +930,7 @@ public class ShadersTex { TextureManager texman = Minecraft.getMinecraft().getTextureManager(); ITextureObject texObj = texman.getTexture(TextureMap.locationBlocksTexture); if (texObj != null) { - MultiTexID multiTex = texObj.getMultiTexID(); + MultiTexID multiTex = texObj.angelica$getMultiTexID(); // base texture GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base); GL11.glTexParameteri( diff --git a/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaLateMixins.java b/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaLateMixins.java new file mode 100644 index 000000000..3bb7f6545 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaLateMixins.java @@ -0,0 +1,37 @@ +package com.gtnewhorizons.angelica.loading; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import com.gtnewhorizon.gtnhmixins.ILateMixinLoader; +import com.gtnewhorizon.gtnhmixins.LateMixin; +import com.gtnewhorizons.angelica.mixins.Mixins; + +@LateMixin +public class AngelicaLateMixins implements ILateMixinLoader { + + @Override + public String getMixinConfig() { + return "mixins.angelica.late.json"; + } + + @Override + public List getMixins(Set loadedMods) { + final List mixins = new ArrayList<>(); + final List notLoading = new ArrayList<>(); + for (Mixins mixin : Mixins.values()) { + if (mixin.phase == Mixins.Phase.LATE) { + if (mixin.shouldLoad(Collections.emptySet(), loadedMods)) { + mixins.addAll(mixin.mixinClasses); + } else { + notLoading.addAll(mixin.mixinClasses); + } + } + } + AngelicaTweaker.LOGGER.info("Not loading the following LATE mixins: {}", notLoading.toString()); + return mixins; + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java b/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java index 58021d442..c15d47410 100644 --- a/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java +++ b/src/main/java/com/gtnewhorizons/angelica/loading/AngelicaTweaker.java @@ -20,7 +20,7 @@ import cpw.mods.fml.relauncher.IFMLLoadingPlugin; @IFMLLoadingPlugin.SortingIndex(1100) public class AngelicaTweaker implements IFMLLoadingPlugin, IEarlyMixinLoader { - public static final Logger log = LogManager.getLogger("AngelicaTweaker"); + public static final Logger LOGGER = LogManager.getLogger("angelica"); @Override public String[] getASMTransformerClass() { @@ -69,7 +69,7 @@ public class AngelicaTweaker implements IFMLLoadingPlugin, IEarlyMixinLoader { } } } - log.info("Not loading the following EARLY mixins: {}", notLoading.toString()); + LOGGER.info("Not loading the following EARLY mixins: {}", notLoading.toString()); return mixins; } } diff --git a/src/main/java/com/gtnewhorizons/angelica/loading/MixinCompatHackTweaker.java b/src/main/java/com/gtnewhorizons/angelica/loading/MixinCompatHackTweaker.java index b89d50d2b..494307e6a 100644 --- a/src/main/java/com/gtnewhorizons/angelica/loading/MixinCompatHackTweaker.java +++ b/src/main/java/com/gtnewhorizons/angelica/loading/MixinCompatHackTweaker.java @@ -10,7 +10,6 @@ import net.minecraft.launchwrapper.Launch; import net.minecraft.launchwrapper.LaunchClassLoader; import com.gtnewhorizons.angelica.transform.AClassTransformer; -import com.gtnewhorizons.angelica.transform.ALog; import cpw.mods.fml.common.asm.transformers.TerminalTransformer; @@ -22,6 +21,7 @@ public class MixinCompatHackTweaker implements ITweaker { try { Field xformersField = lcl.getClass().getDeclaredField("transformers"); xformersField.setAccessible(true); + @SuppressWarnings("unchecked") List xformers = (List) xformersField.get(lcl); int terminalIndex; for (terminalIndex = 1; terminalIndex < xformers.size(); terminalIndex++) { @@ -30,7 +30,7 @@ public class MixinCompatHackTweaker implements ITweaker { } } xformers.add(terminalIndex - 1, new AClassTransformer()); - ALog.info("Hacked in asm class transformer in position %d", terminalIndex - 1); + AngelicaTweaker.LOGGER.info("Hacked in asm class transformer in position {}", terminalIndex - 1); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java b/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java index b31ae61f2..6bdebf1fe 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java @@ -11,37 +11,46 @@ import cpw.mods.fml.relauncher.FMLLaunchHandler; public enum Mixins { ANGELICA_STARTUP(new Builder("Start Angelica").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT) - .setPhase(Phase.EARLY).addMixinClasses("shaders.MixinMinecraft").setApplyIf(() -> true)), - - ANGELICA_ACCESSORS(new Builder("Angelica Accessors").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT) - .setPhase(Phase.EARLY) - .addMixinClasses( - "accessors.ModelRendererAccessor", - "accessors.RendererEntityLivingAccessor", - "accessors.WorldRenderersAccessor") - .setApplyIf(() -> true)), + .setPhase(Phase.EARLY).addMixinClasses("shaders.MixinMinecraft")), ANGELICA_SHADERS_BUTTON(new Builder("Add Shaders Button").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT) - .setPhase(Phase.EARLY).addMixinClasses("settings.MixinGuiVideoSettings").setApplyIf(() -> true)), + .setPhase(Phase.EARLY).addMixinClasses("settings.MixinGuiVideoSettings")), - ANGELICA_LIGHTING( - new Builder("Lighting").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT).setPhase(Phase.EARLY) - .addMixinClasses("lighting.MixinBlock", "lighting.MixinRenderBlocks").setApplyIf(() -> true)), + ANGELICA_LIGHTING(new Builder("Lighting").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT) + .setPhase(Phase.EARLY).addMixinClasses("lighting.MixinBlock", "lighting.MixinRenderBlocks")), - ANGELICA_RENDERER( - new Builder("Renderer").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT).setPhase(Phase.EARLY) - .addMixinClasses( - "renderer.MixinOpenGlHelper", - "renderer.MixinEntityRender", - "renderer.MixinEntityRenderer", - "renderer.MixinRenderBlocks", - "renderer.MixinRenderGlobal", - "renderer.MixinModelRenderer", - "renderer.MixinTextureClock", - "renderer.MixinTextureCompass", - "renderer.MixinSimpleTexture", - "renderer.MixinTessellator") - .setApplyIf(() -> true)) + ANGELICA_RENDERER(new Builder("Renderer").addTargetedMod(TargetedMod.VANILLA).setSide(Side.CLIENT) + .setPhase(Phase.EARLY).addMixinClasses( + "renderer.MixinAbstractTexture", + "renderer.MixinDynamicTexture", + "renderer.MixinEntityRenderer", + "renderer.MixinItemRenderer", + "renderer.MixinITextureObject", + "renderer.MixinLayeredTexture", + "renderer.MixinModelRenderer", + "renderer.MixinOpenGlHelper", + "renderer.MixinRender", + "renderer.MixinRenderBlocks", + "renderer.MixinRenderDragon", + "renderer.MixinRenderEnderman", + "renderer.MixinRendererLivingEntity", + "renderer.MixinRenderGlobal", + "renderer.MixinRenderSpider", + "renderer.MixinSimpleTexture", + "renderer.MixinTessellator", + "renderer.MixinTextureAtlasSprite", + "renderer.MixinTextureClock", + "renderer.MixinTextureCompass", + "renderer.MixinTextureManager", + "renderer.MixinTextureMap", + "renderer.MixinThreadDownloadImageData")), + + COMPAT_PR_ILLUMINATION( + new Builder("ProjectRed Illumination compat").addTargetedMod(TargetedMod.PROJECTRED_ILLUMINATION) + .setSide(Side.CLIENT).addMixinClasses("compat.MixinRenderHalo")), + + COMPAT_SMART_RENDER(new Builder("Smart Render compat").addTargetedMod(TargetedMod.SMART_RENDER).setSide(Side.CLIENT) + .addMixinClasses("compat.MixinModelRotationRenderer")) ; @@ -57,7 +66,7 @@ public enum Mixins { private final String name; private final List mixinClasses = new ArrayList<>(); - private Supplier applyIf; + private Supplier applyIf = () -> true; private Side side = Side.BOTH; private Phase phase = Phase.LATE; private final List targetedMods = new ArrayList<>(); diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/TargetedMod.java b/src/main/java/com/gtnewhorizons/angelica/mixins/TargetedMod.java index a46806992..15df372a1 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/TargetedMod.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/TargetedMod.java @@ -6,7 +6,9 @@ public enum TargetedMod { FASTCRAFT("FastCraft", "fastcraft.Tweaker"), OPTIFINE("Optifine", "optifine.OptiFineForgeTweaker", "Optifine"), GTNHLIB("GTNHLib", "com.gtnewhorizon.gtnhlib.core.GTNHLibCore", "gtnhlib"), - LWJGL3IFY("lwjgl3ify", "me.eigenraven.lwjgl3ify.core.Lwjgl3ifyCoremod", "lwjgl3ify"); + LWJGL3IFY("lwjgl3ify", "me.eigenraven.lwjgl3ify.core.Lwjgl3ifyCoremod", "lwjgl3ify"), + PROJECTRED_ILLUMINATION("ProjectRed Illumination", null, "ProjRed|Illumination"), + SMART_RENDER("Smart Render", null, "SmartRender"); /** The "name" in the @Mod annotation */ public final String modName; diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/ModelRendererAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/ModelRendererAccessor.java deleted file mode 100644 index bb2673dce..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/ModelRendererAccessor.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gtnewhorizons.angelica.mixins.early.accessors; - -import net.minecraft.client.model.ModelRenderer; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ModelRenderer.class) -public interface ModelRendererAccessor { - - @Accessor() - boolean getCompiled(); - - @Accessor() - int getDisplayList(); - - @Accessor() - void setCompiled(boolean compiled); - - @Accessor() - void setDisplayList(int displayList); - -} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/RendererEntityLivingAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/RendererEntityLivingAccessor.java deleted file mode 100644 index 077fa0e56..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/RendererEntityLivingAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gtnewhorizons.angelica.mixins.early.accessors; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RendererLivingEntity; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(RendererLivingEntity.class) -public interface RendererEntityLivingAccessor { - - @Accessor - ModelBase getMainModel(); - - @Accessor - ModelBase getRenderPassModel(); -} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/WorldRenderersAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/WorldRenderersAccessor.java deleted file mode 100644 index aba9ef0f0..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/accessors/WorldRenderersAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gtnewhorizons.angelica.mixins.early.accessors; - -import net.minecraft.client.renderer.RenderGlobal; -import net.minecraft.client.renderer.WorldRenderer; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(RenderGlobal.class) -public interface WorldRenderersAccessor { - - @Accessor - WorldRenderer[] getWorldRenderers(); -} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinAbstractTexture.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinAbstractTexture.java new file mode 100644 index 000000000..eb0abca22 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinAbstractTexture.java @@ -0,0 +1,29 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.texture.AbstractTexture; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.SoftOverride; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.gtnewhorizons.angelica.client.MultiTexID; +import com.gtnewhorizons.angelica.client.ShadersTex; + +@Mixin(AbstractTexture.class) +public class MixinAbstractTexture { + + public MultiTexID angelica$multiTex; + + @Inject(at = @At("HEAD"), method = "deleteGlTexture()V") + private void angelica$deleteTextures(CallbackInfo ci) { + ShadersTex.deleteTextures((AbstractTexture) (Object) this); + } + + @SoftOverride + public MultiTexID angelica$getMultiTexID() { + return ShadersTex.getMultiTexID((AbstractTexture) (Object) this); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinDynamicTexture.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinDynamicTexture.java new file mode 100644 index 000000000..38fae2bf5 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinDynamicTexture.java @@ -0,0 +1,44 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.texture.DynamicTexture; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.Redirect; + +import com.gtnewhorizons.angelica.client.ShadersTex; + +@Mixin(DynamicTexture.class) +public class MixinDynamicTexture { + + @ModifyVariable(argsOnly = true, at = @At(ordinal = 1, value = "LOAD"), index = 1, method = "(II)V") + private int angelica$resizeDynamicTextureData(int p_i1271_2_) { + return p_i1271_2_ * 3; + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;allocateTexture(III)V", + value = "INVOKE"), + method = "(II)V") + private void angelica$initDynamicTexture(int p_110991_0_, int p_110991_1_, int p_110991_2_) { + // p_110991_1_ needs to be divided by 3 to revert angelica$resizeDynamicTextureData + ShadersTex.initDynamicTexture(p_110991_0_, p_110991_1_ / 3, p_110991_2_, (DynamicTexture) (Object) this); + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTexture(I[III)V", + value = "INVOKE"), + method = "updateDynamicTexture()V") + private void angelica$updateDynamicTexture(int p_110988_0_, int[] p_110988_1_, int p_110988_2_, int p_110988_3_) { + ShadersTex.updateDynamicTexture( + p_110988_0_, + p_110988_1_, + p_110988_2_, + p_110988_3_, + (DynamicTexture) (Object) this); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRenderer.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRenderer.java index 7eef9c69c..ccf6f30cc 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRenderer.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRenderer.java @@ -1,45 +1,59 @@ package com.gtnewhorizons.angelica.mixins.early.renderer; +import java.nio.FloatBuffer; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.RenderGlobal; +import net.minecraft.client.renderer.culling.Frustrum; +import net.minecraft.client.renderer.culling.ICamera; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.entity.EntityLivingBase; +import org.lwjgl.opengl.GL11; +import org.spongepowered.asm.lib.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; +import com.gtnewhorizon.mixinextras.injector.ModifyExpressionValue; import com.gtnewhorizons.angelica.client.Shaders; import com.gtnewhorizons.angelica.client.ShadersRender; @Mixin(EntityRenderer.class) public abstract class MixinEntityRenderer { + @Shadow + private Minecraft mc; + @Shadow public abstract void disableLightmap(double p_78483_1_); + // renderHand + @Inject( - method = "Lnet/minecraft/client/renderer/EntityRenderer;renderHand(FI)V", - at = @At( - value = "INVOKE", - shift = At.Shift.BEFORE, - target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", - remap = false)) - public void angelica$applyHandDepth(CallbackInfo ci) { + method = "renderHand(FI)V", + at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false)) + private void angelica$applyHandDepth(CallbackInfo ci) { Shaders.applyHandDepth(); } @Inject( - method = "Lnet/minecraft/client/renderer/EntityRenderer;renderHand(FI)V", + method = "renderHand(FI)V", at = @At( value = "FIELD", - shift = At.Shift.BEFORE, target = "Lnet/minecraft/client/settings/GameSettings;thirdPersonView:I", ordinal = 1), - cancellable = true) - public void angelica$checkCompositeRendered(float p_78476_1_, int p_78476_2_, CallbackInfo ci) { + private void angelica$checkCompositeRendered(float p_78476_1_, int p_78476_2_, CallbackInfo ci) { if (!Shaders.isCompositeRendered) { ci.cancel(); } @@ -47,11 +61,348 @@ public abstract class MixinEntityRenderer { } @Redirect( - method = "Lnet/minecraft/client/renderer/EntityRenderer;renderHand(FI)V", + method = "renderHand(FI)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/renderer/ItemRenderer;renderItemInFirstPerson(F)V")) - public void angelica$renderItemInFirstPerson(ItemRenderer itemRenderer, float partialTicks) { + private void angelica$renderItemInFirstPerson(ItemRenderer itemRenderer, float partialTicks) { ShadersRender.renderItemFP(itemRenderer, partialTicks); } + + // disableLightmap + + @Inject(at = @At("RETURN"), method = "disableLightmap(D)V") + private void angelica$disableLightmap(CallbackInfo ci) { + Shaders.disableLightmap(); + } + + // enableLightmap + + @Inject(at = @At("RETURN"), method = "enableLightmap(D)V") + private void angelica$enableLightmap(CallbackInfo ci) { + Shaders.enableLightmap(); + } + + // renderWorld + + @Inject(at = @At("HEAD"), method = "renderWorld(FJ)V") + private void angelica$beginRender(float p_78471_1_, long p_78471_2_, CallbackInfo ci) { + Shaders.beginRender(this.mc, p_78471_1_, p_78471_2_); + } + + @Redirect( + at = @At(remap = false, target = "Lorg/lwjgl/opengl/GL11;glViewport(IIII)V", value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$setViewport(int x, int y, int width, int height) { + Shaders.setViewport(x, y, width, height); + } + + @Inject( + at = @At( + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glClear(I)V", + value = "INVOKE"), + method = "renderWorld(FJ)V", + slice = @Slice( + from = @At( + args = "intValue=" + (GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT), + value = "CONSTANT"), + to = @At(args = "intValue=" + GL11.GL_CULL_FACE, ordinal = 1, value = "CONSTANT"))) + private void angelica$clearRenderBuffer(CallbackInfo ci) { + Shaders.clearRenderBuffer(); + } + + @Inject( + at = @At( + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/EntityRenderer;setupCameraTransform(FI)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$setCamera(float p_78471_1_, long p_78471_2_, CallbackInfo ci) { + Shaders.setCamera(p_78471_1_); + } + + @Redirect( + at = @At( + opcode = Opcodes.GETFIELD, + target = "Lnet/minecraft/client/settings/GameSettings;renderDistanceChunks:I", + value = "FIELD"), + method = "renderWorld(FJ)V") + private int angelica$isShadowPass(GameSettings gameSettings) { + // A better way would be replacing the if-expression completely but I don't know how. If you figure it how, + // please let me (glowredman) know. Unless that happens, we just redirect the field access and return either 3 + // or 4 to achieve the same. + return Shaders.isShadowPass ? 3 : 4; + } + + @Inject( + at = @At(target = "Lnet/minecraft/client/renderer/RenderGlobal;renderSky(F)V", value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$beginSky(CallbackInfo ci) { + Shaders.beginSky(); + } + + @Inject( + at = @At( + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/RenderGlobal;renderSky(F)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$endSky(CallbackInfo ci) { + Shaders.endSky(); + } + + @Redirect( + at = @At(target = "Lnet/minecraft/client/renderer/culling/Frustrum;setPosition(DDD)V", value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$setFrustrumPosition(Frustrum frustrum, double x, double y, double z) { + ShadersRender.setFrustrumPosition(frustrum, x, y, z); + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/RenderGlobal;clipRenderersByFrustum(Lnet/minecraft/client/renderer/culling/ICamera;F)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$clipRenderersByFrustrum(RenderGlobal renderGlobal, ICamera p_72729_1_, float p_72729_2_) { + ShadersRender.clipRenderersByFrustrum(renderGlobal, (Frustrum) p_72729_1_, p_72729_2_); + } + + @Inject( + at = @At( + ordinal = 7, + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$beginUpdateChunks(CallbackInfo ci) { + Shaders.beginUpdateChunks(); + } + + @Inject( + at = @At( + opcode = Opcodes.GETFIELD, + ordinal = 1, + target = "Lnet/minecraft/entity/EntityLivingBase;posY:D", + value = "FIELD"), + locals = LocalCapture.CAPTURE_FAILEXCEPTION, + method = "renderWorld(FJ)V") + private void angelica$endUpdateChunks(float p_78471_1_, long p_78471_2_, CallbackInfo ci, + EntityLivingBase entitylivingbase, RenderGlobal renderglobal, EffectRenderer effectrenderer, double d0, + double d1, double d2, int j) { + // A better solution would be to inject this directly at the end of the "if (j == 0)" block so checking j == 0 + // again here isn't necessary. If you figure out how to do that, please let me (glowredman) know. + if (j == 0) { + Shaders.endUpdateChunks(); + } + } + + @Inject( + at = @At( + ordinal = 0, + target = "Lnet/minecraft/client/renderer/RenderGlobal;sortAndRender(Lnet/minecraft/entity/EntityLivingBase;ID)I", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$beginTerrain(CallbackInfo ci) { + Shaders.beginTerrain(); + } + + @Inject( + at = @At( + ordinal = 0, + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/RenderGlobal;sortAndRender(Lnet/minecraft/entity/EntityLivingBase;ID)I", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$endTerrain(CallbackInfo ci) { + Shaders.endTerrain(); + } + + @Inject( + at = @At( + target = "Lnet/minecraft/client/particle/EffectRenderer;renderLitParticles(Lnet/minecraft/entity/Entity;F)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$beginLitParticles(CallbackInfo ci) { + Shaders.beginLitParticles(); + } + + @Inject( + at = @At( + target = "Lnet/minecraft/client/particle/EffectRenderer;renderParticles(Lnet/minecraft/entity/Entity;F)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$beginParticles(CallbackInfo ci) { + Shaders.beginParticles(); + } + + @Inject( + at = @At( + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/particle/EffectRenderer;renderParticles(Lnet/minecraft/entity/Entity;F)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$endParticles(CallbackInfo ci) { + Shaders.endParticles(); + } + + @Inject( + at = @At(target = "Lnet/minecraft/client/renderer/EntityRenderer;renderRainSnow(F)V", value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$beginWeather(CallbackInfo ci) { + Shaders.beginWeather(); + } + + @Inject( + at = @At( + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/EntityRenderer;renderRainSnow(F)V", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$endWeather(CallbackInfo ci) { + Shaders.endWeather(); + } + + @Inject( + at = @At( + ordinal = 1, + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glDepthMask(Z)V", + value = "INVOKE"), + locals = LocalCapture.CAPTURE_FAILEXCEPTION, + method = "renderWorld(FJ)V") + private void angelica$renderHand0AndPreWater(float p_78471_1_, long p_78471_2_, CallbackInfo ci, + EntityLivingBase entitylivingbase, RenderGlobal renderglobal, EffectRenderer effectrenderer, double d0, + double d1, double d2, int j) { + ShadersRender.renderHand0((EntityRenderer) (Object) this, p_78471_1_, j); + Shaders.preWater(); + } + + @Inject( + at = @At( + target = "Lnet/minecraft/client/renderer/RenderGlobal;sortAndRender(Lnet/minecraft/entity/EntityLivingBase;ID)I", + value = "INVOKE"), + method = "renderWorld(FJ)V", + slice = @Slice(from = @At(args = "stringValue=water", ordinal = 0, value = "CONSTANT"))) + private void angelica$beginWater(CallbackInfo ci) { + Shaders.beginWater(); + } + + @Inject( + at = @At( + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/RenderGlobal;sortAndRender(Lnet/minecraft/entity/EntityLivingBase;ID)I", + value = "INVOKE"), + method = "renderWorld(FJ)V", + slice = @Slice(from = @At(args = "stringValue=water", ordinal = 0, value = "CONSTANT"))) + private void angelica$endWater(CallbackInfo ci) { + Shaders.endWater(); + } + + @Inject( + at = @At( + opcode = Opcodes.GETFIELD, + target = "Lnet/minecraft/entity/EntityLivingBase;posY:D", + value = "FIELD"), + method = "renderWorld(FJ)V", + slice = @Slice( + from = @At(args = "stringValue=entities", value = "CONSTANT"), + to = @At(args = "stringValue=aboveClouds", value = "CONSTANT"))) + private void angelica$disableFog(CallbackInfo ci) { + Shaders.disableFog(); + } + + @ModifyExpressionValue( + at = @At( + remap = false, + target = "Lnet/minecraftforge/client/ForgeHooksClient;renderFirstPersonHand(Lnet/minecraft/client/renderer/RenderGlobal;FI)Z", + value = "INVOKE"), + method = "renderWorld(FJ)V") + private boolean angelica$isShadowPass(boolean renderFirstPersonHand) { + return renderFirstPersonHand || Shaders.isShadowPass; + } + + @Inject( + at = @At(remap = false, target = "Lorg/lwjgl/opengl/GL11;glClear(I)V", value = "INVOKE"), + locals = LocalCapture.CAPTURE_FAILEXCEPTION, + method = "renderWorld(FJ)V", + slice = @Slice(from = @At(args = "stringValue=hand", value = "CONSTANT"))) + private void angelica$renderHand1AndRenderCompositeFinal(float p_78471_1_, long p_78471_2_, CallbackInfo ci, + EntityLivingBase entitylivingbase, RenderGlobal renderglobal, EffectRenderer effectrenderer, double d0, + double d1, double d2, int j) { + ShadersRender.renderHand1((EntityRenderer) (Object) this, p_78471_1_, j); + Shaders.renderCompositeFinal(); + } + + @Redirect( + at = @At(target = "Lnet/minecraft/client/renderer/EntityRenderer;renderHand(FI)V", value = "INVOKE"), + method = "renderWorld(FJ)V") + private void angelica$renderFPOverlay(EntityRenderer thizz, float p_78476_1_, int p_78476_2_) { + ShadersRender.renderFPOverlay(thizz, p_78476_1_, p_78476_2_); + } + + @Inject( + at = @At( + opcode = Opcodes.GETFIELD, + ordinal = 0, + target = "Lnet/minecraft/client/renderer/EntityRenderer;mc:Lnet/minecraft/client/Minecraft;", + value = "FIELD"), + method = "renderWorld(FJ)V", + slice = @Slice(from = @At(args = "stringValue=hand", value = "CONSTANT"))) + private void angelica$endRender(CallbackInfo ci) { + Shaders.endRender(); + } + + // renderCloudsCheck + + @Redirect( + at = @At(target = "Lnet/minecraft/client/settings/GameSettings;shouldRenderClouds()Z", value = "INVOKE"), + method = "renderCloudsCheck(Lnet/minecraft/client/renderer/RenderGlobal;F)V") + private boolean angelica$shouldRenderClouds(GameSettings gameSettings) { + return Shaders.shouldRenderClouds(gameSettings); + } + + @Inject( + at = @At(target = "Lnet/minecraft/client/renderer/RenderGlobal;renderClouds(F)V", value = "INVOKE"), + method = "renderCloudsCheck(Lnet/minecraft/client/renderer/RenderGlobal;F)V") + private void angelica$beginClouds(CallbackInfo ci) { + Shaders.beginClouds(); + } + + @Inject( + at = @At( + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/RenderGlobal;renderClouds(F)V", + value = "INVOKE"), + method = "renderCloudsCheck(Lnet/minecraft/client/renderer/RenderGlobal;F)V") + private void angelica$endClouds(CallbackInfo ci) { + Shaders.endClouds(); + } + + // updateFogColor + + @Redirect( + at = @At(remap = false, target = "Lorg/lwjgl/opengl/GL11;glClearColor(FFFF)V", value = "INVOKE"), + method = "updateFogColor(F)V") + private void angelica$setClearColor(float red, float green, float blue, float alpha) { + Shaders.setClearColor(red, green, blue, alpha); + } + + // setupFog + + @Redirect( + at = @At(remap = false, target = "Lorg/lwjgl/opengl/GL11;glFogi(II)V", value = "INVOKE"), + method = "setupFog(IF)V") + private void angelica$sglFogi(int pname, int param) { + Shaders.sglFogi(pname, param); + } + + // setFogColorBuffer + + @Inject(at = @At("HEAD"), method = "setFogColorBuffer(FFFF)Ljava/nio/FloatBuffer;") + private void angelica$setFogColor(float red, float green, float blue, float alpha, + CallbackInfoReturnable cir) { + Shaders.setFogColor(red, green, blue); + } } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinITextureObject.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinITextureObject.java new file mode 100644 index 000000000..5e54da1b2 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinITextureObject.java @@ -0,0 +1,14 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.texture.ITextureObject; + +import org.spongepowered.asm.mixin.Mixin; + +import com.gtnewhorizons.angelica.client.MultiTexID; + +@Mixin(ITextureObject.class) +public interface MixinITextureObject { + + MultiTexID angelica$getMultiTexID(); + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinItemRenderer.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinItemRenderer.java new file mode 100644 index 000000000..11aa5830a --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinItemRenderer.java @@ -0,0 +1,45 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.item.ItemStack; + +import org.spongepowered.asm.lib.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import com.gtnewhorizons.angelica.client.Shaders; + +@Mixin(ItemRenderer.class) +public class MixinItemRenderer { + + @Inject( + at = @At( + opcode = Opcodes.PUTFIELD, + target = "Lnet/minecraft/client/renderer/ItemRenderer;itemToRender:Lnet/minecraft/item/ItemStack;", + value = "FIELD"), + locals = LocalCapture.CAPTURE_FAILEXCEPTION, + method = "updateEquippedItem()V") + private void angelica$setItemToRender(CallbackInfo ci, EntityClientPlayerMP entityclientplayermp, + ItemStack itemstack) { + Shaders.itemToRender = itemstack; + } + + @ModifyArg( + at = @At( + ordinal = 0, + remap = true, + target = "Lnet/minecraft/client/renderer/OpenGlHelper;glBlendFunc(IIII)V", + value = "INVOKE"), + index = 3, + method = "renderItem(Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/item/ItemStack;ILnet/minecraftforge/client/IItemRenderer$ItemRenderType;)V", + remap = false) + private int angelica$adjust_dfactorAlpha(int original) { + return 1; + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinLayeredTexture.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinLayeredTexture.java new file mode 100644 index 000000000..51759a3ee --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinLayeredTexture.java @@ -0,0 +1,32 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import java.io.IOException; +import java.util.List; + +import net.minecraft.client.renderer.texture.LayeredTexture; +import net.minecraft.client.resources.IResourceManager; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +import com.gtnewhorizons.angelica.client.ShadersTex; + +@Mixin(LayeredTexture.class) +public class MixinLayeredTexture { + + @Final + @Shadow + public List layeredTextureNames; + + /** + * @author glowredman + * @reason must take normal and specular maps into account + */ + @Overwrite + public void loadTexture(IResourceManager p_110551_1_) throws IOException { + ShadersTex.loadLayeredTexture((LayeredTexture) (Object) this, p_110551_1_, this.layeredTextureNames); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinModelRenderer.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinModelRenderer.java index e729eddb2..a71e868e9 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinModelRenderer.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinModelRenderer.java @@ -17,7 +17,7 @@ public class MixinModelRenderer implements IModelRenderer { @Shadow private int displayList; - public void resetDisplayList() { + public void angelica$resetDisplayList() { if (!compiled && displayList != 0) { GLAllocation.deleteDisplayLists(displayList); displayList = 0; diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRender.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRender.java similarity index 85% rename from src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRender.java rename to src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRender.java index a88958ec1..be2289ff4 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinEntityRender.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRender.java @@ -10,10 +10,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.gtnewhorizons.angelica.client.Shaders; @Mixin(Render.class) -public class MixinEntityRender { +public class MixinRender { @Inject(method = "renderShadow(Lnet/minecraft/entity/Entity;DDDFF)V", at = @At("HEAD"), cancellable = true) - public void angelica$checkSkipShadow(CallbackInfo ci) { + private void angelica$checkShouldSkipDefaultShadow(CallbackInfo ci) { if (Shaders.shouldSkipDefaultShadow) ci.cancel(); } } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderBlocks.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderBlocks.java index 4d357caf8..23ac47815 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderBlocks.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderBlocks.java @@ -19,26 +19,24 @@ public class MixinRenderBlocks { // Block @Inject(method = "renderBlockByRenderType(Lnet/minecraft/block/Block;III)Z", at = @At("HEAD")) - private void angelica$injectShadersBlockPushEntity(Block block, int x, int y, int z, - CallbackInfoReturnable cir) { + private void angelica$pushEntityBlock(Block block, int x, int y, int z, CallbackInfoReturnable cir) { Shaders.pushEntity((RenderBlocks) ((Object) this), block, x, y, z); } @Inject(method = "renderBlockByRenderType(Lnet/minecraft/block/Block;III)Z", at = @At("RETURN")) - private void angelica$injectShadersPopEntityBlock(Block block, int x, int y, int z, - CallbackInfoReturnable cir) { + private void angelica$popEntityBlock(Block block, int x, int y, int z, CallbackInfoReturnable cir) { Shaders.popEntity(); } // BlockFlowerPot @Inject(method = "renderBlockFlowerpot(Lnet/minecraft/block/BlockFlowerPot;III)Z", at = @At("HEAD")) - private void angelica$injectShadersFlowerpotPushEntity(BlockFlowerPot blockFlowerPot, int x, int y, int z, + private void angelica$pushEntityBlockFlowerPot(BlockFlowerPot blockFlowerPot, int x, int y, int z, CallbackInfoReturnable cir) { Shaders.pushEntity((RenderBlocks) ((Object) this), blockFlowerPot, x, y, z); } @Inject(method = "renderBlockFlowerpot(Lnet/minecraft/block/BlockFlowerPot;III)Z", at = @At("RETURN")) - private void angelica$injectShadersFlowerpotPopEntity(BlockFlowerPot blockFlowerPot, int x, int y, int z, + private void angelica$popEntityBlockFlowerPot(BlockFlowerPot blockFlowerPot, int x, int y, int z, CallbackInfoReturnable cir) { Shaders.popEntity(); } @@ -48,7 +46,7 @@ public class MixinRenderBlocks { at = @At( value = "INVOKE", target = "Lnet/minecraft/block/Block;getBlockFromItem(Lnet/minecraft/item/Item;)Lnet/minecraft/block/Block;")) - private Block angelica$injectShadersFlowerpotItemBlockPushEntity(Item itemIn, Operation original) { + private Block angelica$pushEntityFlowerInFlowerPot(Item itemIn, Operation original) { final Block block = original.call(itemIn); Shaders.pushEntity(block); return block; @@ -61,7 +59,7 @@ public class MixinRenderBlocks { target = "Lnet/minecraft/client/renderer/Tessellator;addTranslation(FFF)V", shift = At.Shift.AFTER, ordinal = 1)) - private void angelica$injectShadersFlowerpotItemBlockPopEntity(BlockFlowerPot blockFlowerPot, int x, int y, int z, + private void angelica$popEntityFlowerInFlowerPot(BlockFlowerPot blockFlowerPot, int x, int y, int z, CallbackInfoReturnable cir) { Shaders.popEntity(); } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderDragon.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderDragon.java new file mode 100644 index 000000000..eb795ccee --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderDragon.java @@ -0,0 +1,26 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.entity.RenderDragon; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.gtnewhorizons.angelica.client.Shaders; + +@Mixin(RenderDragon.class) +public class MixinRenderDragon { + + @Inject( + at = @At( + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V", + value = "INVOKE"), + method = "shouldRenderPass(Lnet/minecraft/entity/boss/EntityDragon;IF)I") + private void angelica$beginSpiderEyes(CallbackInfoReturnable cir) { + Shaders.beginSpiderEyes(); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderEnderman.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderEnderman.java new file mode 100644 index 000000000..903e87d0e --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderEnderman.java @@ -0,0 +1,26 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.entity.RenderEnderman; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.gtnewhorizons.angelica.client.Shaders; + +@Mixin(RenderEnderman.class) +public class MixinRenderEnderman { + + @Inject( + at = @At( + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V", + value = "INVOKE"), + method = "shouldRenderPass(Lnet/minecraft/entity/monster/EntityEnderman;IF)I") + private void angelica$beginSpiderEyes(CallbackInfoReturnable cir) { + Shaders.beginSpiderEyes(); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderGlobal.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderGlobal.java index 75bddb737..a634152da 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderGlobal.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderGlobal.java @@ -49,13 +49,14 @@ public class MixinRenderGlobal { target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V", args = "ldc=blockentities", shift = At.Shift.AFTER)) - private void angelica$blockEntities(EntityLivingBase entity, ICamera camera, float p_147589_3_, CallbackInfo ci) { + private void angelica$endEntitiesAndBeginBlockEntities(EntityLivingBase entity, ICamera camera, float p_147589_3_, + CallbackInfo ci) { Shaders.endEntities(); Shaders.beginBlockEntities(); } @Inject( - method = "Lnet/minecraft/client/renderer/RenderGlobal;renderEntities(Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/client/renderer/culling/ICamera;F)V", + method = "renderEntities(Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/client/renderer/culling/ICamera;F)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/renderer/EntityRenderer;disableLightmap(D)V", @@ -173,7 +174,7 @@ public class MixinRenderGlobal { ordinal = 0, shift = At.Shift.BEFORE, by = 2)) - private void angelica$renderSkyPreSkyList(float p_72714_1_, CallbackInfo ci) { + private void angelica$preSkyList(float p_72714_1_, CallbackInfo ci) { Shaders.preSkyList(); } @@ -185,7 +186,7 @@ public class MixinRenderGlobal { ordinal = 1, shift = At.Shift.BY, by = -2)) - private void angelica$renderSkyBeforeCelestialAngle(float p_72714_1_, CallbackInfo ci) { + private void angelica$preCelestialRotate(float p_72714_1_, CallbackInfo ci) { Shaders.preCelestialRotate(); } @@ -197,14 +198,14 @@ public class MixinRenderGlobal { remap = false, ordinal = 9, shift = At.Shift.AFTER)) - private void angelica$renderSkyAfterCelestialAngle(float p_72714_1_, CallbackInfo ci) { + private void angelica$postCelestialRotate(float p_72714_1_, CallbackInfo ci) { Shaders.postCelestialRotate(); } // drawBlockDamageTexture @WrapOperation( - method = "Lnet/minecraft/client/renderer/RenderGlobal;drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", + method = "drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", remap = false, at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glDisable(I)V", remap = false)) private void angelica$drawBlockDamageTextureDisable(int cap, Operation original) { @@ -214,7 +215,7 @@ public class MixinRenderGlobal { } @WrapOperation( - method = "Lnet/minecraft/client/renderer/RenderGlobal;drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", + method = "drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", remap = false, at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glEnable(I)V", remap = false)) private void angelica$drawBlockDamageTextureSkyEnable(int cap, Operation original) { @@ -223,7 +224,7 @@ public class MixinRenderGlobal { } @Inject( - method = "Lnet/minecraft/client/renderer/RenderGlobal;drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", + method = "drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;startDrawingQuads()V", @@ -235,7 +236,7 @@ public class MixinRenderGlobal { } @Inject( - method = "Lnet/minecraft/client/renderer/RenderGlobal;drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", + method = "drawBlockDamageTexture(Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/entity/EntityLivingBase;F)V", at = @At( value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;setTranslation(DDD)V", diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderSpider.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderSpider.java new file mode 100644 index 000000000..8c26918d8 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRenderSpider.java @@ -0,0 +1,26 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.entity.RenderSpider; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.gtnewhorizons.angelica.client.Shaders; + +@Mixin(RenderSpider.class) +public class MixinRenderSpider { + + @Inject( + at = @At( + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glColor4f(FFFF)V", + value = "INVOKE"), + method = "shouldRenderPass(Lnet/minecraft/entity/monster/EntitySpider;IF)I") + private void angelica$beginSpiderEyes(CallbackInfoReturnable cir) { + Shaders.beginSpiderEyes(); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRendererLivingEntity.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRendererLivingEntity.java new file mode 100644 index 000000000..9f891a8de --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinRendererLivingEntity.java @@ -0,0 +1,85 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.entity.EntityLivingBase; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.gtnewhorizons.angelica.client.Shaders; + +@Mixin(RendererLivingEntity.class) +public abstract class MixinRendererLivingEntity { + + @Shadow + protected abstract int getColorMultiplier(EntityLivingBase p_77030_1_, float p_77030_2_, float p_77030_3_); + + @Inject(at = @At("HEAD"), method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V") + private void angelica$setEntityHurtFlash(EntityLivingBase p_76986_1_, double p_76986_2_, double p_76986_4_, + double p_76986_6_, float p_76986_8_, float p_76986_9_, CallbackInfo ci) { + if (!Shaders.useEntityHurtFlash) { + Shaders.setEntityHurtFlash( + p_76986_1_.hurtTime <= 0 && p_76986_1_.deathTime <= 0 ? 0 : 102, + this.getColorMultiplier(p_76986_1_, p_76986_1_.getBrightness(p_76986_9_), p_76986_9_)); + } + } + + @Inject( + at = @At( + target = "Lnet/minecraft/client/renderer/entity/RendererLivingEntity;renderEquippedItems(Lnet/minecraft/entity/EntityLivingBase;F)V", + value = "INVOKE"), + method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V") + private void angelica$resetEntityHurtFlash(CallbackInfo ci) { + Shaders.resetEntityHurtFlash(); + } + + @Inject( + at = @At( + ordinal = 1, + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/OpenGlHelper;setActiveTexture(I)V", + value = "INVOKE"), + method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V") + private void angelica$disableLightmap(CallbackInfo ci) { + Shaders.disableLightmap(); + } + + @Inject( + at = @At( + ordinal = 2, + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glDepthFunc(I)V", + value = "INVOKE"), + method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V") + private void angelica$beginLivingDamage(CallbackInfo ci) { + Shaders.beginLivingDamage(); + } + + @Inject( + at = @At( + ordinal = 3, + remap = false, + shift = At.Shift.AFTER, + target = "Lorg/lwjgl/opengl/GL11;glDepthFunc(I)V", + value = "INVOKE"), + method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V") + private void angelica$endLivingDamage(CallbackInfo ci) { + Shaders.endLivingDamage(); + } + + @Inject( + at = @At( + ordinal = 3, + shift = At.Shift.AFTER, + target = "Lnet/minecraft/client/renderer/OpenGlHelper;setActiveTexture(I)V", + value = "INVOKE"), + method = "doRender(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V") + private void angelica$enableLightmap(CallbackInfo ci) { + Shaders.enableLightmap(); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinSimpleTexture.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinSimpleTexture.java index 2006cb988..ece5431e6 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinSimpleTexture.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinSimpleTexture.java @@ -17,14 +17,16 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.gtnewhorizons.angelica.client.ShadersTex; @Mixin(value = SimpleTexture.class) -public class MixinSimpleTexture extends AbstractTexture { +public abstract class MixinSimpleTexture extends AbstractTexture { private IResourceManager passedResourceManager; + @Shadow protected ResourceLocation textureLocation; + // TODO: Use @Local as soon as it exists in a stable version of MixinExtras @Inject(method = "loadTexture(Lnet/minecraft/client/resources/IResourceManager;)V", at = @At("HEAD")) - private void getResourceManager(IResourceManager p_110551_1_, CallbackInfo cbi) { + private void angelica$getResourceManager(IResourceManager p_110551_1_, CallbackInfo cbi) { passedResourceManager = p_110551_1_; } @@ -32,9 +34,8 @@ public class MixinSimpleTexture extends AbstractTexture { method = "loadTexture(Lnet/minecraft/client/resources/IResourceManager;)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureImageAllocate(ILjava/awt/image/BufferedImage;ZZ)I", - remap = false)) - private int angelica$loadTexture(int textureID, BufferedImage bufferedImage, boolean flag, boolean flag1) { + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureImageAllocate(ILjava/awt/image/BufferedImage;ZZ)I")) + private int angelica$loadSimpleTexture(int textureID, BufferedImage bufferedImage, boolean flag, boolean flag1) { ShadersTex.loadSimpleTexture( textureID, bufferedImage, diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTessellator.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTessellator.java index 5d2b379be..12a36bf44 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTessellator.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTessellator.java @@ -119,6 +119,7 @@ public abstract class MixinTessellator implements TessellatorAccessor { @Overwrite public TesselatorVertexState getVertexState(float x, float y, float z) { int[] tmpCopyBuffer = new int[this.rawBufferIndex]; + @SuppressWarnings("unchecked") PriorityQueue pQueue = new PriorityQueue<>( this.rawBufferIndex, new QuadComparator( @@ -159,102 +160,102 @@ public abstract class MixinTessellator implements TessellatorAccessor { } @Override - public ByteBuffer getAngelica$byteBuffer() { + public ByteBuffer angelica$getByteBuffer() { return angelica$byteBuffer; } @Override - public IntBuffer getAngelica$intBuffer() { + public IntBuffer angelica$getIntBuffer() { return angelica$intBuffer; } @Override - public FloatBuffer getAngelica$floatBuffer() { + public FloatBuffer angelica$getFloatBuffer() { return angelica$floatBuffer; } @Override - public ShortBuffer getAngelica$shortBuffer() { + public ShortBuffer angelica$getShortBuffer() { return angelica$shortBuffer; } @Override - public float[] getAngelica$vertexPos() { + public float[] angelica$getVertexPos() { return angelica$vertexPos; } @Override - public float getAngelica$normalX() { + public float angelica$getNormalX() { return angelica$normalX; } @Override - public float getAngelica$normalY() { + public float angelica$getNormalY() { return angelica$normalY; } @Override - public float getAngelica$normalZ() { + public float angelica$getNormalZ() { return angelica$normalZ; } @Override - public float getAngelica$midTextureU() { + public float angelica$getMidTextureU() { return angelica$midTextureU; } @Override - public float getAngelica$midTextureV() { + public float angelica$getMidTextureV() { return angelica$midTextureV; } @Override - public void setAngelica$byteBuffer(ByteBuffer angelica$byteBuffer) { + public void angelica$setByteBuffer(ByteBuffer angelica$byteBuffer) { this.angelica$byteBuffer = angelica$byteBuffer; } @Override - public void setAngelica$intBuffer(IntBuffer angelica$intBuffer) { + public void angelica$setIntBuffer(IntBuffer angelica$intBuffer) { this.angelica$intBuffer = angelica$intBuffer; } @Override - public void setAngelica$floatBuffer(FloatBuffer angelica$floatBuffer) { + public void angelica$setFloatBuffer(FloatBuffer angelica$floatBuffer) { this.angelica$floatBuffer = angelica$floatBuffer; } @Override - public void setAngelica$shortBuffer(ShortBuffer angelica$shortBuffer) { + public void angelica$setShortBuffer(ShortBuffer angelica$shortBuffer) { this.angelica$shortBuffer = angelica$shortBuffer; } @Override - public void setAngelica$vertexPos(float[] angelica$vertexPos) { + public void angelica$setVertexPos(float[] angelica$vertexPos) { this.angelica$vertexPos = angelica$vertexPos; } @Override - public void setAngelica$normalX(float angelica$normalX) { + public void angelica$setNormalX(float angelica$normalX) { this.angelica$normalX = angelica$normalX; } @Override - public void setAngelica$normalY(float angelica$normalY) { + public void angelica$setNormalY(float angelica$normalY) { this.angelica$normalY = angelica$normalY; } @Override - public void setAngelica$normalZ(float angelica$normalZ) { + public void angelica$setNormalZ(float angelica$normalZ) { this.angelica$normalZ = angelica$normalZ; } @Override - public void setAngelica$midTextureU(float angelica$midTextureU) { + public void angelica$setMidTextureU(float angelica$midTextureU) { this.angelica$midTextureU = angelica$midTextureU; } @Override - public void setAngelica$midTextureV(float angelica$midTextureV) { + public void angelica$setMidTextureV(float angelica$midTextureV) { this.angelica$midTextureV = angelica$midTextureV; } } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureAtlasSprite.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureAtlasSprite.java new file mode 100644 index 000000000..f757bd79f --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureAtlasSprite.java @@ -0,0 +1,31 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import com.gtnewhorizons.angelica.client.ShadersTex; + +@Mixin(TextureAtlasSprite.class) +public class MixinTextureAtlasSprite { + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureMipmap([[IIIIIZZ)V", + value = "INVOKE"), + method = "updateAnimation()V") + private void angelica$uploadTexSub(int[][] p_147955_0_, int p_147955_1_, int p_147955_2_, int p_147955_3_, + int p_147955_4_, boolean p_147955_5_, boolean p_147955_6_) { + ShadersTex.uploadTexSub( + p_147955_0_, + p_147955_1_, + p_147955_2_, + p_147955_3_, + p_147955_4_, + p_147955_5_, + p_147955_6_); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureClock.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureClock.java index 52ae168d2..cc91692c2 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureClock.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureClock.java @@ -15,9 +15,8 @@ public class MixinTextureClock { method = "updateAnimation()V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureMipmap([[IIIIIZZ)V", - remap = false)) - private void angelica$updateAnimation(int[][] data, int width, int height, int xoffset, int yoffset, boolean linear, + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureMipmap([[IIIIIZZ)V")) + private void angelica$uploadTexSub(int[][] data, int width, int height, int xoffset, int yoffset, boolean linear, boolean clamp) { ShadersTex.uploadTexSub(data, width, height, xoffset, yoffset, linear, clamp); } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureCompass.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureCompass.java index 390d9c1bc..b4a811e07 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureCompass.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureCompass.java @@ -15,9 +15,8 @@ public class MixinTextureCompass { method = "updateCompass(Lnet/minecraft/world/World;DDDZZ)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureMipmap([[IIIIIZZ)V", - remap = false)) - private void angelica$updateCompass(int[][] data, int width, int height, int xoffset, int yoffset, boolean linear, + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureMipmap([[IIIIIZZ)V")) + private void angelica$uploadTexSub(int[][] data, int width, int height, int xoffset, int yoffset, boolean linear, boolean clamp) { ShadersTex.uploadTexSub(data, width, height, xoffset, yoffset, linear, clamp); } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureManager.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureManager.java new file mode 100644 index 000000000..1ba1ff0e8 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureManager.java @@ -0,0 +1,41 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.texture.ITextureObject; +import net.minecraft.client.renderer.texture.TextureManager; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import com.gtnewhorizons.angelica.client.ShadersTex; + +@Mixin(TextureManager.class) +public class MixinTextureManager { + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/ITextureObject;getGlTextureId()I", + value = "INVOKE"), + method = "bindTexture(Lnet/minecraft/util/ResourceLocation;)V") + private int angelica$bindTexture(ITextureObject object) { + ShadersTex.bindTexture(object); + return 0; + } + + @Redirect( + at = @At(target = "Lnet/minecraft/client/renderer/texture/TextureUtil;bindTexture(I)V", value = "INVOKE"), + method = "bindTexture(Lnet/minecraft/util/ResourceLocation;)V") + private void angelica$noop(int p_94277_0_) { + // NO-OP + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/ITextureObject;getGlTextureId()I", + value = "INVOKE"), + method = "deleteTexture(Lnet/minecraft/util/ResourceLocation;)V") + private int angelica$deleteMultiTex(ITextureObject itextureobject) { + return ShadersTex.deleteMultiTex(itextureobject); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureMap.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureMap.java new file mode 100644 index 000000000..c4b4457ca --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinTextureMap.java @@ -0,0 +1,114 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import java.io.IOException; + +import net.minecraft.client.renderer.texture.Stitcher; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.resources.IResource; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; + +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.Redirect; +import org.spongepowered.asm.mixin.injection.Slice; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import com.gtnewhorizons.angelica.client.ShadersTex; + +@Mixin(TextureMap.class) +public class MixinTextureMap extends MixinAbstractTexture { + + public int angelica$atlasWidth; + public int angelica$atlasHeight; + + @Unique + private Stitcher stitcher; + + // loadTextureAtlas + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/resources/IResourceManager;getResource(Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/resources/IResource;", + value = "INVOKE"), + method = "loadTextureAtlas(Lnet/minecraft/client/resources/IResourceManager;)V") + private IResource angelica$loadResource(IResourceManager p_110571_1_, ResourceLocation resourcelocation1) + throws IOException { + return ShadersTex.loadResource(p_110571_1_, resourcelocation1); + } + + // TODO: Use @Local as soon as it is in a stable version of MixinExtras + @Inject( + at = @At(ordinal = 0, remap = false, target = "Ljava/util/Map;clear()V", value = "INVOKE"), + locals = LocalCapture.CAPTURE_FAILEXCEPTION, + method = "loadTextureAtlas(Lnet/minecraft/client/resources/IResourceManager;)V") + private void angelica$captureStitcher(IResourceManager p_110571_1_, CallbackInfo ci, int i, Stitcher stitcher) { + this.stitcher = stitcher; + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;allocateTextureImpl(IIIIF)V", + value = "INVOKE"), + method = "loadTextureAtlas(Lnet/minecraft/client/resources/IResourceManager;)V") + private void angelica$allocateTextureMap(int p_147946_0_, int p_147946_1_, int p_147946_2_, int p_147946_3_, + float p_147946_4_) { + ShadersTex.allocateTextureMap( + p_147946_0_, + p_147946_1_, + p_147946_2_, + p_147946_3_, + p_147946_4_, + this.stitcher, + (TextureMap) (Object) this); + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;getIconName()Ljava/lang/String;", + value = "INVOKE"), + method = "loadTextureAtlas(Lnet/minecraft/client/resources/IResourceManager;)V", + slice = @Slice( + from = @At( + args = "ldc=Uploading GL texture", + remap = false, + target = "Lcpw/mods/fml/common/ProgressManager$ProgressBar;step(Ljava/lang/String;)V", + value = "INVOKE_STRING"))) + private String angelica$getIconName(TextureAtlasSprite textureatlassprite) { + return ShadersTex.setIconName(ShadersTex.setSprite(textureatlassprite).getIconName()); + } + + @Redirect( + at = @At( + target = "Lnet/minecraft/client/renderer/texture/TextureUtil;uploadTextureMipmap([[IIIIIZZ)V", + value = "INVOKE"), + method = "loadTextureAtlas(Lnet/minecraft/client/resources/IResourceManager;)V") + private void angelica$uploadTexSubForLoadAtlas(int[][] p_147955_0_, int p_147955_1_, int p_147955_2_, + int p_147955_3_, int p_147955_4_, boolean p_147955_5_, boolean p_147955_6_) { + ShadersTex.uploadTexSubForLoadAtlas( + p_147955_0_, + p_147955_1_, + p_147955_2_, + p_147955_3_, + p_147955_4_, + p_147955_5_, + p_147955_6_); + } + + // updateAnimations + + @Inject(at = @At("HEAD"), method = "updateAnimations()V") + private void angelica$setUpdatingTex(CallbackInfo ci) { + ShadersTex.updatingTex = this.angelica$getMultiTexID(); + } + + @Inject(at = @At("RETURN"), method = "updateAnimations()V") + private void angelica$resetUpdatingTex(CallbackInfo ci) { + ShadersTex.updatingTex = null; + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinThreadDownloadImageData.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinThreadDownloadImageData.java new file mode 100644 index 000000000..812194c1a --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/renderer/MixinThreadDownloadImageData.java @@ -0,0 +1,28 @@ +package com.gtnewhorizons.angelica.mixins.early.renderer; + +import net.minecraft.client.renderer.ThreadDownloadImageData; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.SoftOverride; + +import com.gtnewhorizons.angelica.client.MultiTexID; + +@Mixin(ThreadDownloadImageData.class) +public abstract class MixinThreadDownloadImageData extends MixinAbstractTexture { + + @Shadow + private boolean textureUploaded; + + @Shadow + public abstract int getGlTextureId(); + + @SoftOverride + public MultiTexID angelica$getMultiTexID() { + if (!this.textureUploaded) { + this.getGlTextureId(); + } + return super.angelica$getMultiTexID(); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/early/settings/MixinGuiVideoSettings.java b/src/main/java/com/gtnewhorizons/angelica/mixins/early/settings/MixinGuiVideoSettings.java index e5b97d55f..7beb640fc 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/early/settings/MixinGuiVideoSettings.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/early/settings/MixinGuiVideoSettings.java @@ -14,14 +14,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.gtnewhorizons.angelica.client.GuiShaders; @Mixin(GuiVideoSettings.class) -abstract public class MixinGuiVideoSettings extends GuiScreen { +public abstract class MixinGuiVideoSettings extends GuiScreen { private static final int SHADER_BUTTON_ID = 190; @Shadow private GameSettings guiGameSettings; - @SuppressWarnings("unchecked") @Inject(method = "initGui()V", at = @At(value = "TAIL")) private void angelica$addShadersButton(CallbackInfo ci) { // Add the Shaders Button to the bottom of Video Options diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelRenderer.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelRenderer.java index d5b6a31f4..7bc055318 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelRenderer.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/IModelRenderer.java @@ -2,5 +2,5 @@ package com.gtnewhorizons.angelica.mixins.interfaces; public interface IModelRenderer { - void resetDisplayList(); + void angelica$resetDisplayList(); } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TessellatorAccessor.java b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TessellatorAccessor.java index 053988604..446627919 100644 --- a/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TessellatorAccessor.java +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/interfaces/TessellatorAccessor.java @@ -7,43 +7,43 @@ import java.nio.ShortBuffer; public interface TessellatorAccessor { - ByteBuffer getAngelica$byteBuffer(); + ByteBuffer angelica$getByteBuffer(); - IntBuffer getAngelica$intBuffer(); + IntBuffer angelica$getIntBuffer(); - FloatBuffer getAngelica$floatBuffer(); + FloatBuffer angelica$getFloatBuffer(); - ShortBuffer getAngelica$shortBuffer(); + ShortBuffer angelica$getShortBuffer(); - float[] getAngelica$vertexPos(); + float[] angelica$getVertexPos(); - float getAngelica$normalX(); + float angelica$getNormalX(); - float getAngelica$normalY(); + float angelica$getNormalY(); - float getAngelica$normalZ(); + float angelica$getNormalZ(); - float getAngelica$midTextureU(); + float angelica$getMidTextureU(); - float getAngelica$midTextureV(); + float angelica$getMidTextureV(); - void setAngelica$byteBuffer(ByteBuffer angelica$byteBuffer); + void angelica$setByteBuffer(ByteBuffer angelica$byteBuffer); - void setAngelica$intBuffer(IntBuffer angelica$intBuffer); + void angelica$setIntBuffer(IntBuffer angelica$intBuffer); - void setAngelica$floatBuffer(FloatBuffer angelica$floatBuffer); + void angelica$setFloatBuffer(FloatBuffer angelica$floatBuffer); - void setAngelica$shortBuffer(ShortBuffer angelica$shortBuffer); + void angelica$setShortBuffer(ShortBuffer angelica$shortBuffer); - void setAngelica$vertexPos(float[] angelica$vertexPos); + void angelica$setVertexPos(float[] angelica$vertexPos); - void setAngelica$normalX(float angelica$normalX); + void angelica$setNormalX(float angelica$normalX); - void setAngelica$normalY(float angelica$normalY); + void angelica$setNormalY(float angelica$normalY); - void setAngelica$normalZ(float angelica$normalZ); + void angelica$setNormalZ(float angelica$normalZ); - void setAngelica$midTextureU(float angelica$midTextureU); + void angelica$setMidTextureU(float angelica$midTextureU); - void setAngelica$midTextureV(float angelica$midTextureV); + void angelica$setMidTextureV(float angelica$midTextureV); } diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/compat/MixinModelRotationRenderer.java b/src/main/java/com/gtnewhorizons/angelica/mixins/late/compat/MixinModelRotationRenderer.java new file mode 100644 index 000000000..77053b032 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/late/compat/MixinModelRotationRenderer.java @@ -0,0 +1,20 @@ +package com.gtnewhorizons.angelica.mixins.late.compat; + +import net.minecraft.client.model.ModelRenderer; +import net.smart.render.ModelRotationRenderer; + +import org.spongepowered.asm.mixin.Mixin; + +import com.gtnewhorizons.angelica.mixins.early.renderer.MixinModelRenderer; + +@Mixin(ModelRotationRenderer.class) +public class MixinModelRotationRenderer extends MixinModelRenderer { + + @Override + public void angelica$resetDisplayList() { + super.angelica$resetDisplayList(); + ((ModelRenderer) (Object) this).compiled = false; + ((ModelRenderer) (Object) this).displayList = 0; + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/mixins/late/compat/MixinRenderHalo.java b/src/main/java/com/gtnewhorizons/angelica/mixins/late/compat/MixinRenderHalo.java new file mode 100644 index 000000000..2836b6aa2 --- /dev/null +++ b/src/main/java/com/gtnewhorizons/angelica/mixins/late/compat/MixinRenderHalo.java @@ -0,0 +1,28 @@ +package com.gtnewhorizons.angelica.mixins.late.compat; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.gtnewhorizons.angelica.client.Shaders; + +import mrtjp.projectred.core.RenderHalo; + +@Mixin(value = RenderHalo.class) +public class MixinRenderHalo { + + @Inject( + at = @At(remap = false, target = "Lcodechicken/lib/render/CCRenderState;reset()V", value = "INVOKE"), + method = "prepareRenderState()V", + remap = false) + private void angelica$beginProjectRedHalo(CallbackInfo ci) { + Shaders.beginProjectRedHalo(); + } + + @Inject(at = @At("TAIL"), method = "restoreRenderState()V", remap = false) + private void angelica$endProjectRedHalo(CallbackInfo ci) { + Shaders.endProjectRedHalo(); + } + +} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTEntityRenderer.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTEntityRenderer.java index 35138f043..76566d6fb 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTEntityRenderer.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/ACTEntityRenderer.java @@ -1,7 +1,6 @@ package com.gtnewhorizons.angelica.transform; -import static org.objectweb.asm.Opcodes.*; - +import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.launchwrapper.IClassTransformer; import org.objectweb.asm.ClassReader; @@ -11,13 +10,15 @@ import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; -/** transformer for net.minecraft.client.renderer.EntityRenderer */ +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; + +/** Transformer for {@link EntityRenderer} */ public class ACTEntityRenderer implements IClassTransformer { @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); + public byte[] transform(String name, String transformedName, byte[] basicClass) { + AngelicaTweaker.LOGGER.debug("transforming %s %s", name, transformedName); + ClassReader cr = new ClassReader(basicClass); ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); CVTransform cv = new CVTransform(cw); cr.accept(cv, 0); @@ -26,7 +27,7 @@ public class ACTEntityRenderer implements IClassTransformer { private static class CVTransform extends ClassVisitor { - String classname; + private String classname; public CVTransform(ClassVisitor cv) { super(Opcodes.ASM4, cv); @@ -36,687 +37,47 @@ public class ACTEntityRenderer implements IClassTransformer { public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { classname = name; - // ALog.info(" class %s",name); cv.visit(version, access, name, signature, superName, interfaces); } @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (Names.entityRenderer_disableLightmap.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVdisableLightmap(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_enableLightmap.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVenableLightmap(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_updateFogColor.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVupdateFogColor(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_setFogColorBuffer.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVsetFogColorBuffer(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_setupFog.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVsetupFog(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_renderCloudsCheck.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVrenderCloudsCheck(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_renderHand.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - access = access & (~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC; + if (Names.entityRenderer_renderHand.equalsNameDesc(name, desc)) { + AngelicaTweaker.LOGGER.trace(" patching method %s.%s%s", classname, name, desc); return new MVrenderHand(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.entityRenderer_renderWorld.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVrenderWorld(cv.visitMethod(access, name, desc, signature, exceptions)); } return cv.visitMethod(access, name, desc, signature, exceptions); } } - private static class MVdisableLightmap extends MethodVisitor { - - public MVdisableLightmap(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitInsn(int opcode) { - if (opcode == RETURN) { - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "disableLightmap", "()V"); - } - mv.visitInsn(opcode); - } - } - - private static class MVenableLightmap extends MethodVisitor { - - public MVenableLightmap(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitInsn(int opcode) { - if (opcode == RETURN) { - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "enableLightmap", "()V"); - } - mv.visitInsn(opcode); - } - } - - private static class MVupdateFogColor extends MethodVisitor { - - public MVupdateFogColor(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.equals("org/lwjgl/opengl/GL11", "glClearColor", "(FFFF)V", owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "setClearColor", - "(FFFF)V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVsetFogColorBuffer extends MethodVisitor { - - public MVsetFogColorBuffer(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitCode() { - mv.visitCode(); - mv.visitVarInsn(FLOAD, 1); - mv.visitVarInsn(FLOAD, 2); - mv.visitVarInsn(FLOAD, 3); - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "setFogColor", "(FFF)V"); - } - } - - private static class MVsetupFog extends MethodVisitor { - - public MVsetupFog(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.equals("org/lwjgl/opengl/GL11", "glFogi", "(II)V", owner, name, desc)) { - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "sglFogi", "(II)V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVrenderCloudsCheck extends MethodVisitor { - - public MVrenderCloudsCheck(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.gameSettings_shouldRenderClouds.equals(owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "shouldRenderClouds", - "(" + Names.gameSettings_.desc + ")Z"); - return; - } else if (Names.renderGlobal_renderClouds.equals(owner, name, desc)) { - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "beginClouds", "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "endClouds", "()V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - private static class MVrenderHand extends MethodVisitor { - Label la1, la2; + private Label label; public MVrenderHand(MethodVisitor mv) { super(Opcodes.ASM4, mv); - la1 = new Label(); - la2 = new Label(); + label = new Label(); } @Override public void visitMethodInsn(int opcode, String owner, String name, String desc) { + // Wraps the code from GL11.glPushMatrix() to GL11.glPopMatrix() in an if(!Shaders.isHandRendered) check if (Names.equals("org/lwjgl/opengl/GL11", "glPushMatrix", "()V", owner, name, desc)) { - mv.visitFieldInsn(GETSTATIC, "com/gtnewhorizons/angelica/client/Shaders", "isHandRendered", "Z"); - mv.visitJumpInsn(IFNE, la1); + mv.visitFieldInsn( + Opcodes.GETSTATIC, + "com/gtnewhorizons/angelica/client/Shaders", + "isHandRendered", + "Z"); + mv.visitJumpInsn(Opcodes.IFNE, label); mv.visitMethodInsn(opcode, owner, name, desc); return; } else if (Names.equals("org/lwjgl/opengl/GL11", "glPopMatrix", "()V", owner, name, desc)) { mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitLabel(la1); + mv.visitLabel(label); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); return; } mv.visitMethodInsn(opcode, owner, name, desc); } } - - private static class MVrenderWorld extends MethodVisitor { - - public MVrenderWorld(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - private static final int stateEnd = 32; - int state = 0; - String section = ""; - Label labelAfterUpdate = null; - Label labelEndUpdate = null; - Label labelNoSky = null; - - @Override - public void visitCode() { - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - Names.entityRenderer_mc.clas, - Names.entityRenderer_mc.name, - Names.entityRenderer_mc.desc); - mv.visitVarInsn(FLOAD, 1); - mv.visitVarInsn(LLOAD, 2); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginRender", - "(" + Names.minecraft_.desc + "FJ)V"); - } - - @Override - public void visitLdcInsn(Object cst) { - if (cst instanceof String) { - String scst = (String) cst; - // ALog.finest(" %d Ldc %s", state, scst); - section = scst; - } - mv.visitLdcInsn(cst); - } - - @Override - public void visitIntInsn(int opcode, int operand) { - // ALog.finest(" %d Int %d %d", state ,opcode, operand); - // switch (state) { - // case 23: - // case 25: - // if (opcode == SIPUSH && operand == 256) { - // state = 26; - // mv.visitInsn(ICONST_0); - // return; - // } - // break; - // } - mv.visitIntInsn(opcode, operand); - } - - @Override - public void visitJumpInsn(int opcode, Label label) { - // ALog.finest(" %d, Jump %d", state, opcode); - switch (state) { - case 4: - if (opcode == IF_ICMPLT) { - ++state; - mv.visitInsn(POP2); - mv.visitFieldInsn(GETSTATIC, "com/gtnewhorizons/angelica/client/Shaders", "isShadowPass", "Z"); - mv.visitJumpInsn(IFNE, label); - return; - } - break; - case 10: - if (opcode == IFNE) { - ++state; - labelAfterUpdate = label; - labelEndUpdate = new Label(); - mv.visitJumpInsn(opcode, label); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginUpdateChunks", - "()V"); - return; - } - break; - case 11: - if (label == labelAfterUpdate) { - mv.visitJumpInsn(opcode, labelEndUpdate); - return; - } - break; - case 28: - if (opcode == IFNE) { - ++state; - mv.visitJumpInsn(opcode, label); - mv.visitFieldInsn(GETSTATIC, "com/gtnewhorizons/angelica/client/Shaders", "isShadowPass", "Z"); - mv.visitJumpInsn(IFNE, label); - // mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", - // "readCenterDepth", - // "()V"); - // mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", - // "beginHand", "()V"); - // mv.visitVarInsn(ALOAD, 0); - // mv.visitVarInsn(FLOAD, 1); - // mv.visitVarInsn(ILOAD, 13); - // mv.visitMethodInsn(INVOKESPECIAL, Names.EntityRenderer_, Names.EntityRenderer_renderHand, - // Names.EntityRenderer_renderHand_desc); - // mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "endHand", - // "()V"); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(FLOAD, 1); - mv.visitVarInsn(ILOAD, 13); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersRender", - "renderHand1", - "(" + Names.entityRenderer_.desc + "FI)V"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "renderCompositeFinal", - "()V"); - return; - } - break; - } - mv.visitJumpInsn(opcode, label); - } - - @Override - public void visitLabel(Label label) { - switch (state) { - case 11: - if (label == labelAfterUpdate) { - ++state; - mv.visitLabel(labelEndUpdate); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endUpdateChunks", - "()V"); - mv.visitLabel(label); - labelAfterUpdate = labelEndUpdate = null; - return; - } - } - mv.visitLabel(label); - } - - @Override - public void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack) { - // ALog.finest(" %d, Frame",state); - switch (state) { - case 7: { - state = 8; - mv.visitLabel(labelNoSky); - labelNoSky = null; - mv.visitFrame(type, nLocal, local, nStack, stack); - return; - } - - case 31: { - ++state; - mv.visitFrame(type, nLocal, local, nStack, stack); - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "endRender", "()V"); - return; - } - } - mv.visitFrame(type, nLocal, local, nStack, stack); - } - - @Override - public void visitFieldInsn(int opcode, String owner, String name, String desc) { - // ALog.finest(" %d F %d %s.%s %s", state, opcode, ownerM, nameM, descM); - switch (state) { - case 3: - if (Names.gameSettings_renderDistance.equals(owner, name)) { - ++state; - } - break; - case 24: - case 26: - if (Names.entityRenderer_cameraZoom.equals(owner, name)) { - state = 28; - mv.visitFieldInsn(opcode, owner, name, desc); - return; - } - break; - } - mv.visitFieldInsn(opcode, owner, name, desc); - } - - @Override - public void visitVarInsn(int opcode, int var) { - switch (state) { - case 29: - if (opcode == ALOAD) { - ++state; - mv.visitVarInsn(opcode, var); - return; - } - break; - } - mv.visitVarInsn(opcode, var); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - // ALog.finest(" %d M %d %s.%s%s", state, opcode, ownerM, nameM, descM); - switch (state) { - case 0: - if (Names.equals("org/lwjgl/opengl/GL11", "glViewport", "(IIII)V", owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "setViewport", - "(IIII)V"); - return; - } - break; - case 1: - if (Names.equals("org/lwjgl/opengl/GL11", "glClear", "(I)V", owner, name, desc)) { - ++state; - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "clearRenderBuffer", - "()V"); - return; - } - break; - case 2: - if (Names.entityRenderer_setupCameraTransform.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitVarInsn(FLOAD, 1); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "setCamera", - "(F)V"); - return; - } - break; - case 3: - if (Names.equals("Config", "isSkyEnabled", "()Z", owner, name, desc)) { - state = 6; - mv.visitFieldInsn(GETSTATIC, "com/gtnewhorizons/angelica/client/Shaders", "isShadowPass", "Z"); - labelNoSky = new Label(); - mv.visitJumpInsn(IFNE, labelNoSky); - mv.visitMethodInsn(opcode, owner, name, desc); - return; - } - break; - case 5: - if (Names.renderGlobal_renderSky.equals(owner, name, desc)) { - state = 8; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginSky", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "endSky", "()V"); - return; - } - break; - case 6: - if (Names.renderGlobal_renderSky.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginSky", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "endSky", "()V"); - return; - } - break; - case 8: - if (Names.iCamera_setPosition.equals(owner, name, desc) - || Names.frustrum_setPosition.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersRender", - "setFrustrumPosition", - "(" + Names.frustrum_.desc + "DDD)V"); - return; - } - break; - case 9: - if (Names.renderGlobal_clipRenderersByFrustum.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersRender", - "clipRenderersByFrustrum", - "(" + Names.renderGlobal_.desc + Names.frustrum_.desc + "F)V"); - return; - } - break; - case 12: - if (Names.renderGlobal_sortAndRender.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginTerrain", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endTerrain", - "()V"); - return; - } - break; - case 13: - if (Names.effectRenderer_renderLitParticles.equals(owner, name, desc)) { - // vanilla or forge. not optfine - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginLitParticles", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - return; - } else if (Names.equals("org/lwjgl/opengl/GL11", "glDisable", "(I)V", owner, name, desc)) { - // optifine - state = 16; - break; - } - break; - case 14: // vanilla or forge. not optfine - if (Names.effectRenderer_renderParticles.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginParticles", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endParticles", - "()V"); - return; - } - break; - case 15: // vanilla or forge. not optfine - if (Names.equals("org/lwjgl/opengl/GL11", "glDisable", "(I)V", owner, name, desc)) { - ++state; - break; - } - break; - case 16: - if (Names.entityRenderer_renderRainSnow.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginWeather", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endWeather", - "()V"); - return; - } - break; - case 17: - if (Names.equals("org/lwjgl/opengl/GL11", "glDepthMask", "(Z)V", owner, name, desc)) { - ++state; - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(FLOAD, 1); - mv.visitVarInsn(ILOAD, 13); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersRender", - "renderHand0", - "(" + Names.entityRenderer_.desc + "FI)V"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "preWater", - "()V"); - return; - } - case 18: - case 19: - case 20: - if (Names.renderGlobal_sortAndRender.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginWater", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endWater", - "()V"); - return; - } else if (Names - .equals(Names.renderGlobal_.clas, "renderAllSortedRenderers", "(ID)I", owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginWater", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endWater", - "()V"); - return; - } - break; - case 21: - if (Names.equals("org/lwjgl/opengl/GL11", "glDepthMask", "(Z)V", owner, name, desc)) { - ++state; - mv.visitMethodInsn(opcode, owner, name, desc); - return; - } - break; - case 22: - if (Names.equals("org/lwjgl/opengl/GL11", "glDisable", "(I)V", owner, name, desc)) { - ++state; - mv.visitMethodInsn(opcode, owner, name, desc); - return; - } - break; - case 23: - if (Names.equals("org/lwjgl/opengl/GL11", "glDisable", "(I)V", owner, name, desc)) { - ++state; - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "disableFog", - "()V"); - return; - } - break; - case 24: - if (Names.effectRenderer_renderLitParticles.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginLitParticles", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - return; - } - break; - case 25: - if (Names.effectRenderer_renderParticles.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginParticles", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endParticles", - "()V"); - return; - } - break; - case 30: - if (Names.entityRenderer_renderHand.equals(owner, name, desc)) { - ++state; - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersRender", - "renderFPOverlay", - "(" + Names.entityRenderer_.desc + "FI)V"); - return; - } - break; - } - /* - * case : if (Namer.equals(SMCNames.,SMCNames.,SMCNames._desc,owner,name,desc)) { ++state; - * mv.visitMethodInsn(opcode, owner, name, desc); return; } break; case : if - * (Namer.equals("","","",owner,name,desc)) { ++state; mv.visitMethodInsn(opcode, owner, name, desc); - * return; } break; - */ - mv.visitMethodInsn(opcode, owner, name, desc); - } - - @Override - public void visitEnd() { - if (state != stateEnd) ALog.severe(" state %d expect %d", state, stateEnd); - mv.visitEnd(); - } - } } diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTItemRenderer.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTItemRenderer.java deleted file mode 100644 index 2e057dc74..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTItemRenderer.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.lwjgl.opengl.GL11; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTItemRenderer implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - Names.Meth renderItemIrt = new Names.Meth( - Names.itemRenderer_, - "renderItem", - "(" + Names.entityLivingBase_.desc - + Names.itemStack_.desc - + "ILnet/minecraftforge/client/IItemRenderer$ItemRenderType;)V"); - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s",classname,name,desc); - if (Names.itemRenderer_updateEquipped.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVupdate(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.itemRenderer_renderItem.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVrenderItem(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (renderItemIrt.equalsNameDesc(name, desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVrenderItem(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVupdate extends MethodVisitor { - - public MVupdate(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitFieldInsn(int opcode, String owner, String name, String desc) { - if (opcode == PUTFIELD && Names.itemRenderer_itemToRender.equals(owner, name, desc)) { - mv.visitInsn(DUP); - mv.visitFieldInsn( - PUTSTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "itemToRender", - Names.itemStack_.desc); - } - mv.visitFieldInsn(opcode, owner, name, desc); - } - } - - private static class MVrenderItem extends MethodVisitor { - - public MVrenderItem(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - int state = 0; - - @Override - public void visitInsn(int opcode) { - if (state == 1) { - if (opcode == ICONST_0) { - ++state; - opcode = ICONST_1; - } - } - mv.visitInsn(opcode); - } - - @Override - public void visitIntInsn(int opcode, int operand) { - if (state == 0) { - if (opcode == SIPUSH && operand == GL11.GL_BLEND) { - ++state; - } - } - mv.visitIntInsn(opcode, operand); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTPrjRedIlluRenderHalo.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTPrjRedIlluRenderHalo.java deleted file mode 100644 index 0be5eeb29..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTPrjRedIlluRenderHalo.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.INVOKESTATIC; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTPrjRedIlluRenderHalo implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, 0); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - this.classname = name; - // ALog.info(" class %s",name); - super.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" %s%s",name,desc); - if ("prepareRenderState".equals(name) && "()V".equals(desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVprepare(cv.visitMethod(access, name, desc, signature, exceptions)); - } - if ("restoreRenderState".equals(name) && "()V".equals(desc)) { - ALog.finer(" patch method %s.%s%s", classname, name, desc); - return new MVrestore(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVprepare extends MethodVisitor { - - public MVprepare(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.equals("codechicken/lib/render/CCRenderState", "reset", "()V", owner, name, desc)) { - ALog.info(" beginHalo"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginProjectRedHalo", - "()V"); - } - super.visitMethodInsn(opcode, owner, name, desc); - } - - @Override - public void visitInsn(int opcode) { - super.visitInsn(opcode); - } - } - - private static class MVrestore extends MethodVisitor { - - public MVrestore(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - super.visitMethodInsn(opcode, owner, name, desc); - if (Names.equals("org/lwjgl/opengl/GL11", "glDisable", "(I)V", owner, name, desc)) { - ALog.info(" endHalo"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endProjectRedHalo", - "()V"); - } - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTRenderManager.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTRenderManager.java deleted file mode 100644 index 7698b9286..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTRenderManager.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.Opcodes; - -/** transformer for net.minecraft.client.renderer.Tessellator */ -public class ACTRenderManager implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, 0); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - boolean endFields = false; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - if (Names.renderManager_entityRenderMap.name.equals(name)) { - access = access & (~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC; - } - return cv.visitField(access, name, desc, signature, value); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTRenderSpider.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTRenderSpider.java deleted file mode 100644 index 2a4a828da..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTRenderSpider.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTRenderSpider implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (Names.renderDragon_shouldRenderPass.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVshouldRenderPass(cv.visitMethod(access, name, desc, signature, exceptions)); - } - if (Names.renderEnderman_shouldRenderPass.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVshouldRenderPass(cv.visitMethod(access, name, desc, signature, exceptions)); - } - if (Names.renderSpider_shouldRenderPass.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVshouldRenderPass(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVshouldRenderPass extends MethodVisitor { - - public MVshouldRenderPass(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - mv.visitMethodInsn(opcode, owner, name, desc); - if (Names.equals("org/lwjgl/opengl/GL11", "glColor4f", "(FFFF)V", owner, name, desc)) { - mv.visitMethodInsn(INVOKESTATIC, "com/gtnewhorizons/angelica/client/Shaders", "beginSpiderEyes", "()V"); - } - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTRendererLivingEntity.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTRendererLivingEntity.java index 5adb5f256..fa8ad5c1e 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTRendererLivingEntity.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/ACTRendererLivingEntity.java @@ -1,24 +1,29 @@ package com.gtnewhorizons.angelica.transform; -import static org.objectweb.asm.Opcodes.*; +import static org.objectweb.asm.Opcodes.GETSTATIC; +import static org.objectweb.asm.Opcodes.IFNE; +import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL; +import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.launchwrapper.IClassTransformer; import org.lwjgl.opengl.GL12; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; + +/** Transformer for {@link RendererLivingEntity} */ public class ACTRendererLivingEntity implements IClassTransformer { @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); + public byte[] transform(String name, String transformedName, byte[] basicClass) { + AngelicaTweaker.LOGGER.debug("transforming {} {}", name, transformedName); + ClassReader cr = new ClassReader(basicClass); ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); CVTransform cv = new CVTransform(cw); cr.accept(cv, 0); @@ -27,9 +32,9 @@ public class ACTRendererLivingEntity implements IClassTransformer { private static class CVTransform extends ClassVisitor { - String classname; + private String classname; - public CVTransform(ClassVisitor cv) { + private CVTransform(ClassVisitor cv) { super(Opcodes.ASM4, cv); } @@ -37,122 +42,39 @@ public class ACTRendererLivingEntity implements IClassTransformer { public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { classname = name; - // ALog.info(" class %s",name); cv.visit(version, access, name, signature, superName, interfaces); } - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - if (Names.rendererLivingE_mainModel.name.equals(name) - || Names.rendererLivingE_renderPassModel.name.equals(name)) { - access = access & ~(ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED) | ACC_PUBLIC; - } - return cv.visitField(access, name, desc, signature, value); - } - @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); if (Names.rendererLivingE_doRender.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); + AngelicaTweaker.LOGGER.trace(" patching method {}.{}{}", classname, name, desc); return new MVdoRenderLiving(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.rendererLivingE_renderLabel.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVrenderLivingLabel(cv.visitMethod(access, name, desc, signature, exceptions)); } return cv.visitMethod(access, name, desc, signature, exceptions); } } + /** + * Wraps everything in + * {@link RendererLivingEntity#doRender(net.minecraft.entity.EntityLivingBase, double, double, double, float, float)} + * between {@code this.renderEquippedItems(p_76986_1_, p_76986_9_);} and + * {@code GL11.glDisable(GL12.GL_RESCALE_NORMAL);} in an {@code if (!Shaders.useEntityHurtFlash)}-block + */ private static class MVdoRenderLiving extends MethodVisitor { - public MVdoRenderLiving(MethodVisitor mv) { + private MVdoRenderLiving(MethodVisitor mv) { super(Opcodes.ASM4, mv); } - @Override - public void visitCode() { - // ALog.info(" insert code"); - mv.visitCode(); - mv.visitFieldInsn(GETSTATIC, "com/gtnewhorizons/angelica/client/Shaders", "useEntityHurtFlash", "Z"); - Label label1 = new Label(); - mv.visitJumpInsn(IFEQ, label1); - mv.visitVarInsn(ALOAD, 1); - mv.visitFieldInsn( - GETFIELD, - Names.entityLivingBase_hurtTime.clas, - Names.entityLivingBase_hurtTime.name, - Names.entityLivingBase_hurtTime.desc); - Label label2 = new Label(); - mv.visitJumpInsn(IFGT, label2); - mv.visitVarInsn(ALOAD, 1); - mv.visitFieldInsn( - GETFIELD, - Names.entityLivingBase_deathTime.clas, - Names.entityLivingBase_deathTime.name, - Names.entityLivingBase_deathTime.desc); - Label label3 = new Label(); - mv.visitJumpInsn(IFLE, label3); - mv.visitLabel(label2); - mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); - mv.visitIntInsn(BIPUSH, 102); - Label label4 = new Label(); - mv.visitJumpInsn(GOTO, label4); - mv.visitLabel(label3); - mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); - mv.visitInsn(ICONST_0); - mv.visitLabel(label4); - mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] { Opcodes.INTEGER }); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitVarInsn(ALOAD, 1); - mv.visitVarInsn(FLOAD, 9); - mv.visitMethodInsn( - INVOKEVIRTUAL, - Names.entity_getBrightness.clas, - Names.entity_getBrightness.name, - Names.entity_getBrightness.desc); - mv.visitVarInsn(FLOAD, 9); - mv.visitMethodInsn( - INVOKEVIRTUAL, - Names.rendererLivingE_getColorMultiplier.clas, - Names.rendererLivingE_getColorMultiplier.name, - Names.rendererLivingE_getColorMultiplier.desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "setEntityHurtFlash", - "(II)V"); - mv.visitLabel(label1); - mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); - // ALog.info(" end insert"); - } - - /** last SIPUSH operand */ - private int lastInt = 0; - /** state */ - private int state = 0; - - private static final int stateEnd = 7; /** end of vanilla hurt rendering */ - Label labelEndVH = null; - - @Override - public void visitIntInsn(int opcode, int operand) { - if (opcode == SIPUSH) { - lastInt = operand; - } - mv.visitIntInsn(opcode, operand); - } + private Label labelEndVH = null; @Override public void visitLdcInsn(Object cst) { - if (cst instanceof Integer) { - int icst = ((Integer) cst).intValue(); - if (icst == GL12.GL_RESCALE_NORMAL) { - // ALog.info(" rescale_normal"); + if (cst instanceof Integer integer) { + if (integer.intValue() == GL12.GL_RESCALE_NORMAL) { if (labelEndVH != null) { - // ALog.info(" jump target"); mv.visitLabel(labelEndVH); labelEndVH = null; } @@ -163,136 +85,14 @@ public class ACTRendererLivingEntity implements IClassTransformer { @Override public void visitMethodInsn(int opcode, String owner, String name, String desc) { - // ALog.info(" %s.%s%s",ownerM,nameM,descM); - if (opcode == INVOKEVIRTUAL) { - if (Names.rendererLivingE_renderEquippedItems.equals(owner, name, desc)) { - // ALog.info(" renderEquippedItems"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "resetEntityHurtFlash", - "()V"); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitFieldInsn( - GETSTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "useEntityHurtFlash", - "Z"); - labelEndVH = new Label(); - mv.visitJumpInsn(IFNE, labelEndVH); - state = 1; - return; - } - } - // - mv.visitMethodInsn(opcode, owner, name, desc); - // - if (opcode == INVOKESTATIC) { - if (Names.equals("org/lwjgl/opengl/GL11", "glDepthFunc", "(I)V", owner, name, desc)) { - // ALog.info(" glDepthFunc"); - if (state == 3) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "beginLivingDamage", - "()V"); - ++state; - } else if (state == 4) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "endLivingDamage", - "()V"); - ++state; - } - } else if (Names.openGlHelper_setActiveTexture.equals(owner, name, desc)) { - // ALog.info(" setActiveTexture"); - if (state == 1) { - ++state; - } else if (state == 2) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "disableLightmap", - "()V"); - ++state; - } else if (state == 5) { - ++state; - } else if (state == 6) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/Shaders", - "enableLightmap", - "()V"); - ++state; - } - } - } - } - - @Override - public void visitEnd() { - mv.visitEnd(); - if (state != stateEnd) { - ALog.severe("state %d expected %d", state, stateEnd); - } - } - } - - private static class MVrenderLivingLabel extends MethodVisitor { - - public MVrenderLivingLabel(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - int pushedInt = 0; - - @Override - public void visitIntInsn(int opcode, int operand) { - mv.visitIntInsn(opcode, operand); - if (opcode == SIPUSH && operand == 3553) pushedInt = 3553; - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (pushedInt == 3553) { - pushedInt = 0; - if (opcode == INVOKESTATIC && owner.equals("org/lwjgl/opengl/GL11") && desc.equals("(I)V")) { - if (name.equals("glDisable")) { - owner = "com/gtnewhorizons/angelica/client/Shaders"; - name = "sglDisableT2D"; - } else if (name.equals("glEnable")) { - owner = "com/gtnewhorizons/angelica/client/Shaders"; - name = "sglEnableT2D"; - } - } + if (opcode == INVOKEVIRTUAL && Names.rendererLivingE_renderEquippedItems.equals(owner, name, desc)) { + mv.visitMethodInsn(opcode, owner, name, desc); + mv.visitFieldInsn(GETSTATIC, "com/gtnewhorizons/angelica/client/Shaders", "useEntityHurtFlash", "Z"); + labelEndVH = new Label(); + mv.visitJumpInsn(IFNE, labelEndVH); + return; } mv.visitMethodInsn(opcode, owner, name, desc); } } - - // private static class MVNTransform extends MethodVisitor - // { - // protected MethodVisitor mv; - // protected MethodNode mn; - // public MVNTransform(MethodNode mn, MethodVisitor mv) { - // super(Opcodes.ASM4); - // super.mv = this.mn = mn; - // this.mv = mv; - // } - // - // @Override - // public void visitEnd() { - // super.visitEnd(); - // Iterator it = mn.instructions.iterator(); - // while (it.hasNext()) - // { - // AbstractInsnNode node = it.next(); - // System.out.println(node.toString()); - // } - // // send to target - // mn.accept(mv); - // } - // } - } diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTSmartMoveModelRotationRenderer.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTSmartMoveModelRotationRenderer.java deleted file mode 100644 index 03f07ffd8..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTSmartMoveModelRotationRenderer.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTSmartMoveModelRotationRenderer implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if ("resetDisplayList".equals(name) && "()V".equals(desc)) { - return null; - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - - @Override - public void visitEnd() { - MethodVisitor mv; - { - mv = cv.visitMethod(ACC_PUBLIC, "resetDisplayList", "()V", null, null); - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKESPECIAL, Names.modelRenderer_.clas, "resetDisplayList", "()V"); - mv.visitVarInsn(ALOAD, 0); - mv.visitInsn(ICONST_0); - // mv.visitFieldInsn(PUTFIELD, "net/smart/render/ModelRotationRenderer", "compiled", "Z"); - mv.visitFieldInsn( - PUTFIELD, - "net/smart/render/ModelRotationRenderer", - Names.modelRenderer_compiled.name, - "Z"); - mv.visitVarInsn(ALOAD, 0); - mv.visitInsn(ICONST_0); - // mv.visitFieldInsn(PUTFIELD, "net/smart/render/ModelRotationRenderer", "displayList", "I"); - mv.visitFieldInsn( - PUTFIELD, - "net/smart/render/ModelRotationRenderer", - Names.modelRenderer_displayList.name, - "I"); - mv.visitInsn(RETURN); - mv.visitMaxs(2, 1); - mv.visitEnd(); - } - super.visitEnd(); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureAbstract.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureAbstract.java deleted file mode 100644 index dc0eb3a11..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureAbstract.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -/** transformer for net.minecraft.client.renderer.texture.AbstractTexture */ -public class ACTTextureAbstract implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - boolean endFields = false; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - if (name.equals("multiTex")) { - return null; - } else { - access = access & (~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC; - } - return cv.visitField(access, name, desc, signature, value); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (!endFields) { - endFields = true; - FieldVisitor fv; - // multiTex - fv = cv.visitField( - ACC_PUBLIC, - "multiTex", - "Lcom/gtnewhorizons/angelica/client/MultiTexID;", - null, - null); - fv.visitEnd(); - } - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (Names.abstractTexture_deleteGlTexture.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s%s",classname,name,desc,nameM,descM); - return new MVdeleteGlTexture(cv.visitMethod(access, name, desc, signature, exceptions)); - } else - if (name.equals("getMultiTexID") && desc.equals("()Lcom/gtnewhorizons/angelica/client/MultiTexID;")) { - return null; - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - - @Override - public void visitEnd() { - MethodVisitor mv; - // getMultiTexID - mv = cv.visitMethod( - ACC_PUBLIC, - "getMultiTexID", - "()Lcom/gtnewhorizons/angelica/client/MultiTexID;", - null, - null); - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "getMultiTexID", - "(" + Names.abstractTexture_.desc + ")Lcom/gtnewhorizons/angelica/client/MultiTexID;"); - mv.visitInsn(ARETURN); - mv.visitMaxs(1, 1); - mv.visitEnd(); - // end - cv.visitEnd(); - } - } - - private static class MVdeleteGlTexture extends MethodVisitor { - - public MVdeleteGlTexture(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitCode() { - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "deleteTextures", - "(" + Names.abstractTexture_.desc + ")V"); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureAtlasSprite.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureAtlasSprite.java deleted file mode 100644 index 8cc44043a..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureAtlasSprite.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -/** transformer for net.minecraft.client.renderer.texture.TextureAtlasSprite */ -public class ACTTextureAtlasSprite implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - // String nameM = SMCRemap.remapper.mapFieldName(classname, name, desc); - access = access & ~(ACC_PRIVATE | ACC_PROTECTED) | ACC_PUBLIC; - return cv.visitField(access, name, desc, signature, value); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - access = access & ~(ACC_PRIVATE | ACC_PROTECTED) | ACC_PUBLIC; - if (Names.textureAtlasSpri_updateAnimation.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVanimation(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (name.equals("load") - && desc.equals("(" + Names.iResourceManager_.desc + Names.resourceLocation_.desc + ")Z")) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVload(cv.visitMethod(access, name, desc, signature, exceptions)); - } else - if (Names.textureAtlasSpri_loadSprite.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVloadSprite(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (name.equals("uploadFrameTexture") && desc.equals("(III)V")) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVuploadFrameTexture(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - // also used by clock and compass - protected static class MVanimation extends MethodVisitor { - - // protected MethodVisitor mv; - public MVanimation(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - // this.mv = mv; - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.textureUtil_uploadTexSub.equals(owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "uploadTexSub", - "([[IIIIIZZ)V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVload extends MethodVisitor { - - // protected MethodVisitor mv; - public MVload(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - // this.mv = mv; - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.iResourceManager_getResource.equals(owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "loadResource", - "(" + Names.iResourceManager_.desc - + Names.resourceLocation_.desc - + ")" - + Names.iResource_.desc); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVloadSprite extends MethodVisitor { - - // protected MethodVisitor mv; - public MVloadSprite(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - // this.mv = mv; - } - - @Override - public void visitIntInsn(int opcode, int operand) { - if (opcode == NEWARRAY && operand == T_INT) { - mv.visitInsn(ICONST_3); - mv.visitInsn(IMUL); - } - mv.visitIntInsn(opcode, operand); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.equals("java/awt/image/BufferedImage", "getRGB", "(IIII[III)[I", owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "loadAtlasSprite", - "(Ljava/awt/image/BufferedImage;IIII[III)[I"); - return; - } else if (Names.textureAtlasSpri_getFrameTextureData.equals(owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "extractFrame", - "([IIII)[I"); - return; - } else if (Names.equals(Names.textureAtlasSpri_.clas, "fixTransparentColor", "([I)V", owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "fixTransparentColor", - "(" + Names.textureAtlasSpri_.desc + "[I)V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVuploadFrameTexture extends MethodVisitor { - - public MVuploadFrameTexture(MethodVisitor mv) { - super(Opcodes.ASM4, null); - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ILOAD, 1); - mv.visitVarInsn(ILOAD, 2); - mv.visitVarInsn(ILOAD, 3); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "uploadFrameTexture", - "(" + Names.textureAtlasSpri_.desc + "III)V"); - mv.visitInsn(RETURN); - Label l2 = new Label(); - mv.visitLabel(l2); - mv.visitLocalVariable("this", Names.textureAtlasSpri_.desc, null, l0, l2, 0); - mv.visitLocalVariable("frameIndex", "I", null, l0, l2, 1); - mv.visitLocalVariable("xPos", "I", null, l0, l2, 2); - mv.visitLocalVariable("yPos", "I", null, l0, l2, 3); - mv.visitMaxs(4, 4); - mv.visitEnd(); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureDownload.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureDownload.java deleted file mode 100644 index 238a0c9d2..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureDownload.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTTextureDownload implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - // ALog.finest(" field %s %s %s %d", classname, name, desc, access); - return super.visitField(access, name, desc, signature, value); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // String nameM = SMCRemap.remapper.mapMethodName(classname, name, desc); - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (name.equals("getMultiTexID")) { - return null; - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - - @Override - public void visitEnd() { - MethodVisitor mv; - // getMultiTexID - mv = cv.visitMethod( - ACC_PUBLIC, - "getMultiTexID", - "()Lcom/gtnewhorizons/angelica/client/MultiTexID;", - null, - null); - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - Names.textureDownload_textureUploaded.clas, - Names.textureDownload_textureUploaded.name, - Names.textureDownload_textureUploaded.desc); - Label l1 = new Label(); - mv.visitJumpInsn(IFNE, l1); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEVIRTUAL, - Names.textureDownload_.clas, - Names.iTextureObject_getGlTextureId.name, - Names.iTextureObject_getGlTextureId.desc); - mv.visitInsn(POP); - mv.visitLabel(l1); - mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESPECIAL, - Names.abstractTexture_.clas, - "getMultiTexID", - "()Lcom/gtnewhorizons/angelica/client/MultiTexID;"); - mv.visitInsn(ARETURN); - Label l3 = new Label(); - mv.visitLabel(l3); - mv.visitLocalVariable("this", Names.textureDownload_.desc, null, l0, l3, 0); - mv.visitMaxs(1, 1); - mv.visitEnd(); - // end - cv.visitEnd(); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureDynamic.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureDynamic.java deleted file mode 100644 index aec358b40..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureDynamic.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTTextureDynamic implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (name.equals("") && desc.equals("(II)V")) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVinit(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.dynamicTexture_updateDynamicTexture.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVupdate(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVinit extends MethodVisitor { - - // protected MethodVisitor mv; - public MVinit(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - // this.mv = mv; - } - - @Override - public void visitIntInsn(int opcode, int operand) { - if (opcode == NEWARRAY && operand == T_INT) { - mv.visitInsn(ICONST_3); - mv.visitInsn(IMUL); - } - mv.visitIntInsn(opcode, operand); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.textureUtil_allocateTexture.equals(owner, name, desc)) { - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "initDynamicTexture", - "(III" + Names.dynamicTexture_.desc + ")V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVupdate extends MethodVisitor { - - // protected MethodVisitor mv; - public MVupdate(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - // this.mv = mv; - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.textureUtil_uploadTexture.equals(owner, name, desc)) { - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "updateDynamicTexture", - "(I[III" + Names.dynamicTexture_.desc + ")V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureLayered.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureLayered.java deleted file mode 100644 index 950f920ec..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureLayered.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTTextureLayered implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // String descM = SMCNames.remapper.mapMethodDesc(desc); - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (Names.iTextureObject_loadTexture.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVloadTexture(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVloadTexture extends MethodVisitor { - - // protected MethodVisitor mv; - public MVloadTexture(MethodVisitor mv) { - super(Opcodes.ASM4); - // replace method body - mv.visitCode(); - Label l0 = new Label(); - mv.visitLabel(l0); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn( - GETFIELD, - Names.layeredTexture_layeredTextureNames.clas, - Names.layeredTexture_layeredTextureNames.name, - Names.layeredTexture_layeredTextureNames.desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "loadLayeredTexture", - "(" + Names.layeredTexture_.desc + Names.iResourceManager_.desc + "Ljava/util/List;)V"); - mv.visitInsn(RETURN); - Label l2 = new Label(); - mv.visitLabel(l2); - mv.visitLocalVariable("this", Names.layeredTexture_.desc, null, l0, l2, 0); - mv.visitLocalVariable("manager", Names.iResourceManager_.desc, null, l0, l2, 1); - mv.visitMaxs(3, 2); - mv.visitEnd(); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureManager.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureManager.java deleted file mode 100644 index 1aa6aca9a..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureManager.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTTextureManager implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s%s",classname,name,desc,nameM,descM); - if (Names.textureManager_bindTexture.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s%s",classname,name,desc,nameM,descM); - return new MVbindTexture(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.textureManager_onResourceManagerReload.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s%s",classname,name,desc,nameM,descM); - return new MVonReload(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVbindTexture extends MethodVisitor { - - public MVbindTexture(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.iTextureObject_getGlTextureId.equals(owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "bindTexture", - "(" + Names.iTextureObject_.desc + ")V"); - return; - } else if (Names.textureUtil_bindTexture.equals(owner, name, desc)) { - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVonReload extends MethodVisitor { - - public MVonReload(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - if (Names.iTextureObject_getGlTextureId.equals(owner, name, desc)) { - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "deleteMultiTex", - "(" + Names.iTextureObject_.desc + ")I"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureMap.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureMap.java deleted file mode 100644 index 8904b8436..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureMap.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTTextureMap implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, ClassWriter.COMPUTE_MAXS); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - boolean endFields = false; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - if (name.equals("atlasWidth")) { - return null; - } else if (name.equals("atlasHeight")) { - return null; - } else if (Names.textureMap_anisotropic.name.equals(name)) { - access = access & (~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC; - } - return super.visitField(access, name, desc, signature, value); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (!endFields) { - endFields = true; - FieldVisitor fv; - fv = cv.visitField(ACC_PUBLIC, "atlasWidth", "I", null, null); - fv.visitEnd(); - fv = cv.visitField(ACC_PUBLIC, "atlasHeight", "I", null, null); - fv.visitEnd(); - } - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (Names.textureMap_getIconResLoc.equalsNameDesc(name, desc)) { - access = access & (~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC; - } else if (Names.textureMap_loadTextureAtlas.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVloadAtlas(cv.visitMethod(access, name, desc, signature, exceptions)); - } else if (Names.textureMap_updateAnimations.equalsNameDesc(name, desc)) { - // ALog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM); - return new MVanimation(cv.visitMethod(access, name, desc, signature, exceptions)); - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class MVloadAtlas extends MethodVisitor { - - // protected MethodVisitor mv; - public MVloadAtlas(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - // this.mv = mv; - } - - @Override - public void visitIntInsn(int opcode, int operand) { - if (opcode == NEWARRAY && operand == T_INT) { - mv.visitInsn(ICONST_3); - mv.visitInsn(IMUL); - } - mv.visitIntInsn(opcode, operand); - } - - int varStitcher = 0; - boolean isStitcher = false; - int state = 0; - - @Override - public void visitVarInsn(int opcode, int var) { - if (opcode == ASTORE) { - if (isStitcher) { - isStitcher = false; - varStitcher = var; - } - } - mv.visitVarInsn(opcode, var); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { - // ALog.finest(" %s.%s%s",ownerM,nameM,descM); - if (Names.iResourceManager_getResource.equals(owner, name, desc)) { - ALog.finest(" %s", "loadRes"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "loadResource", - "(" + Names.iResourceManager_.desc - + Names.resourceLocation_.desc - + ")" - + Names.iResource_.desc); - return; - } else if (opcode == INVOKESPECIAL - && Names.equals(Names.stitcher_.clas, "", "(IIZII)V", owner, name, desc)) { - isStitcher = true; - } else - if (Names.textureUtil_allocateTextureMipmapAniso.equals(owner, name, desc)) { - ALog.finest(" %s", "allocateTextureMap"); - mv.visitVarInsn(ALOAD, varStitcher); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "allocateTextureMap", - "(IIIIF" + Names.stitcher_.desc + Names.textureMap_.desc + ")V"); - state = 1; - return; - } else if (state == 1 && Names.textureAtlasSpri_getIconName.equals(owner, name, desc)) { - ALog.finest(" %s", "setSprite setIconName"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "setSprite", - "(" + Names.textureAtlasSpri_.desc + ")" + Names.textureAtlasSpri_.desc); - mv.visitMethodInsn(opcode, owner, name, desc); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "setIconName", - "(Ljava/lang/String;)Ljava/lang/String;"); - state = 0; - return; - } else if (Names.textureUtil_uploadTexSub.equals(owner, name, desc)) { - ALog.finest(" %s", "uploadTexSubForLoadAtlas"); - mv.visitMethodInsn( - INVOKESTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "uploadTexSubForLoadAtlas", - "([[IIIIIZZ)V"); - return; - } - mv.visitMethodInsn(opcode, owner, name, desc); - } - } - - private static class MVanimation extends MethodVisitor { - - public MVanimation(MethodVisitor mv) { - super(Opcodes.ASM4, mv); - } - - @Override - public void visitCode() { - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn( - INVOKEVIRTUAL, - Names.textureMap_.clas, - "getMultiTexID", - "()Lcom/gtnewhorizons/angelica/client/MultiTexID;"); - mv.visitFieldInsn( - PUTSTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "updatingTex", - "Lcom/gtnewhorizons/angelica/client/MultiTexID;"); - } - - @Override - public void visitInsn(int opcode) { - if (opcode == RETURN) { - mv.visitInsn(ACONST_NULL); - mv.visitFieldInsn( - PUTSTATIC, - "com/gtnewhorizons/angelica/client/ShadersTex", - "updatingTex", - "Lcom/gtnewhorizons/angelica/client/MultiTexID;"); - } - mv.visitInsn(opcode); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureObject.java b/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureObject.java deleted file mode 100644 index 0dfa5d04f..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ACTTextureObject.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static org.objectweb.asm.Opcodes.*; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -public class ACTTextureObject implements IClassTransformer { - - @Override - public byte[] transform(String par1, String par2, byte[] par3) { - ALog.fine("transforming %s %s", par1, par2); - ClassReader cr = new ClassReader(par3); - ClassWriter cw = new ClassWriter(cr, 0); - CVTransform cv = new CVTransform(cw); - cr.accept(cv, 0); - return cw.toByteArray(); - } - - private static class CVTransform extends ClassVisitor { - - String classname; - - public CVTransform(ClassVisitor cv) { - super(Opcodes.ASM4, cv); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, - String[] interfaces) { - classname = name; - // ALog.info(" class %s",name); - cv.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - // ALog.info(" method %s.%s%s = %s",classname,name,desc,remappedName); - if (name.equals("getMultiTexID") && desc.equals("()Lcom/gtnewhorizons/angelica/client/MultiTexID;")) { - return null; - } - return cv.visitMethod(access, name, desc, signature, exceptions); - } - - @Override - public void visitEnd() { - MethodVisitor mv; - // getMultiTexID - mv = cv.visitMethod( - ACC_PUBLIC + ACC_ABSTRACT, - "getMultiTexID", - "()Lcom/gtnewhorizons/angelica/client/MultiTexID;", - null, - null); - mv.visitEnd(); - // end - cv.visitEnd(); - } - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/AClassTransformer.java b/src/main/java/com/gtnewhorizons/angelica/transform/AClassTransformer.java index 1364c9f0e..cb70f042d 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/AClassTransformer.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/AClassTransformer.java @@ -9,9 +9,10 @@ import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.tree.ClassNode; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; + public class AClassTransformer implements IClassTransformer { - Names names; /** map of class transformer */ protected Map ctMap; @@ -19,37 +20,19 @@ public class AClassTransformer implements IClassTransformer { ctMap.put(clas.clas.replace('/', '.'), ct); } - // constructor public AClassTransformer() { - names = new Names(); InitNames.init(); - ctMap = new HashMap(); + ctMap = new HashMap<>(); put(Names.entityRenderer_, new ACTEntityRenderer()); - put(Names.renderManager_, new ACTRenderManager()); put(Names.rendererLivingE_, new ACTRendererLivingEntity()); - put(Names.renderDragon_, new ACTRenderSpider()); - put(Names.renderEnderman_, new ACTRenderSpider()); - put(Names.renderSpider_, new ACTRenderSpider()); - put(Names.itemRenderer_, new ACTItemRenderer()); - put(Names.textureDownload_, new ACTTextureDownload()); - put(Names.abstractTexture_, new ACTTextureAbstract()); - put(Names.iTextureObject_, new ACTTextureObject()); - put(Names.layeredTexture_, new ACTTextureLayered()); - put(Names.dynamicTexture_, new ACTTextureDynamic()); - put(Names.textureMap_, new ACTTextureMap()); - put(Names.textureAtlasSpri_, new ACTTextureAtlasSprite()); - put(Names.textureManager_, new ACTTextureManager()); - ctMap.put("mrtjp.projectred.illumination.RenderHalo$", new ACTPrjRedIlluRenderHalo()); - ctMap.put("net.smart.render.ModelRotationRenderer", new ACTSmartMoveModelRotationRenderer()); } @Override - public byte[] transform(String par1, String par2, byte[] par3) { - byte[] bytecode = par3; - // if (par2.startsWith("mrtjp")) ALog.info("**** [%s]", par2); - IClassTransformer ct = ctMap.get(par2); + public byte[] transform(String name, String transformedName, byte[] basicClass) { + byte[] bytecode = basicClass; + IClassTransformer ct = ctMap.get(transformedName); if (ct != null) { - bytecode = ct.transform(par1, par2, bytecode); + bytecode = ct.transform(name, transformedName, bytecode); // HACK: Fix stackframes ClassNode node = new ClassNode(); ClassReader reader = new ClassReader(bytecode); @@ -58,9 +41,9 @@ public class AClassTransformer implements IClassTransformer { node.accept(writer); bytecode = writer.toByteArray(); // END HACK - int len1 = par3.length; // arg2!=null?arg2.length:0; - int len2 = bytecode.length; // bytecode!=null?bytecode.length:0; - ALog.fine(" %d (%+d)", len2, len2 - len1); + int oldLength = basicClass.length; + int newLength = bytecode.length; + AngelicaTweaker.LOGGER.debug(" {} (+{})", newLength, newLength - oldLength); } return bytecode; } diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/ALog.java b/src/main/java/com/gtnewhorizons/angelica/transform/ALog.java deleted file mode 100644 index 308e7442e..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/ALog.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gtnewhorizons.angelica.transform; - -import static java.util.logging.Level.ALL; -import static java.util.logging.Level.SEVERE; -import static java.util.logging.Level.WARNING; - -import java.io.IOException; -import java.util.Calendar; -import java.util.logging.ConsoleHandler; -import java.util.logging.FileHandler; -import java.util.logging.Formatter; -import java.util.logging.Handler; -import java.util.logging.Level; -import java.util.logging.LogRecord; -import java.util.logging.Logger; - -public abstract class ALog { - - private static class SMCFormatter extends Formatter { - - int tzOffset; - - SMCFormatter() { - tzOffset = Calendar.getInstance().getTimeZone().getRawOffset(); - } - - @Override - public String format(LogRecord record) { - StringBuilder sb = new StringBuilder(); - // int time = (int)((record.getMillis() + tzOffset) % (24*60*60*1000)); - sb.append("[") - // .append(time/36000000).append(time/3600000%10)//.append(":") - // .append(time/600000%6).append(time/60000%10)//.append(":") - // .append(time/10000%6).append(time/10000%10).append(".") - // .append(time/100%10).append(time/10%10).append(time%10).append(" ") - .append(record.getLoggerName()).append(" ").append(record.getLevel()).append("]") - .append(record.getMessage()).append("\n"); - return sb.toString(); - } - } - - private static class ALogger extends Logger { - - ALogger(String name) { - super(name, null); - setUseParentHandlers(false); - Formatter formatter = new SMCFormatter(); - Handler handler = new ConsoleHandler(); - handler.setFormatter(formatter); - addHandler(handler); - try { - handler = new FileHandler("shadersmod-%u.log", 8 * 1048576, 1, false); - handler.setFormatter(formatter); - addHandler(handler); - } catch (IOException e) { - e.printStackTrace(); - } - setLevel(ALL); - } - } - - private static class SMCLevel extends Level { - - private SMCLevel(String name, int value) { - super(name, value); - } - } - - public static final String ALogName = "ANG"; - public static final Logger logger = new ALogger(ALogName); - public static final Level ANGINFO = new SMCLevel("INF", 850); - public static final Level ANGCONFIG = new SMCLevel("CFG", 840); - public static final Level ANGFINE = new SMCLevel("FNE", 830); - public static final Level ANGFINER = new SMCLevel("FNR", 820); - public static final Level ANGFINEST = new SMCLevel("FNT", 810); - - public static void log(Level level, String format, Object... args) { - if (logger.isLoggable(level)) logger.log(level, String.format(format, args)); - } - - public static void severe(String format, Object... args) { - if (logger.isLoggable(SEVERE)) logger.log(SEVERE, String.format(format, args)); - } - - public static void warning(String format, Object... args) { - if (logger.isLoggable(WARNING)) logger.log(WARNING, String.format(format, args)); - } - - public static void info(String format, Object... args) { - if (logger.isLoggable(ANGINFO)) logger.log(ANGINFO, String.format(format, args)); - } - - public static void config(String format, Object... args) { - if (logger.isLoggable(ANGCONFIG)) logger.log(ANGCONFIG, String.format(format, args)); - } - - public static void fine(String format, Object... args) { - if (logger.isLoggable(ANGFINE)) logger.log(ANGFINE, String.format(format, args)); - } - - public static void finer(String format, Object... args) { - if (logger.isLoggable(ANGFINER)) logger.log(ANGFINER, String.format(format, args)); - } - - public static void finest(String format, Object... args) { - if (logger.isLoggable(ANGFINEST)) logger.log(ANGFINEST, String.format(format, args)); - } -} diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/InitNames.java b/src/main/java/com/gtnewhorizons/angelica/transform/InitNames.java index dae593c45..7fa42b22d 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/InitNames.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/InitNames.java @@ -2,11 +2,13 @@ package com.gtnewhorizons.angelica.transform; import net.minecraft.launchwrapper.Launch; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; + public class InitNames { public static void init() { final boolean obfuscated = !(Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); - ALog.info("Environment obfuscated: %s", obfuscated); + AngelicaTweaker.LOGGER.info("Environment obfuscated: {}", obfuscated); if (obfuscated) { new NamerSrg().setNames(); } else { diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/Namer.java b/src/main/java/com/gtnewhorizons/angelica/transform/Namer.java index 5553f77d5..1cf2735f5 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/Namer.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/Namer.java @@ -8,9 +8,9 @@ import com.gtnewhorizons.angelica.transform.Names.Meth; public class Namer { - ArrayList ac = new ArrayList(); - ArrayList af = new ArrayList(); - ArrayList am = new ArrayList(); + ArrayList ac = new ArrayList<>(); + ArrayList af = new ArrayList<>(); + ArrayList am = new ArrayList<>(); Clas c(String name) { Clas x = new Clas(name); diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/Namer1_7_10.java b/src/main/java/com/gtnewhorizons/angelica/transform/Namer1_7_10.java index e12814576..42225d8c5 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/Namer1_7_10.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/Namer1_7_10.java @@ -1,6 +1,11 @@ package com.gtnewhorizons.angelica.transform; -import static com.gtnewhorizons.angelica.transform.Names.*; +import static com.gtnewhorizons.angelica.transform.Names.entityLivingBase_; +import static com.gtnewhorizons.angelica.transform.Names.entityRenderer_; +import static com.gtnewhorizons.angelica.transform.Names.entityRenderer_renderHand; +import static com.gtnewhorizons.angelica.transform.Names.rendererLivingE_; +import static com.gtnewhorizons.angelica.transform.Names.rendererLivingE_doRender; +import static com.gtnewhorizons.angelica.transform.Names.rendererLivingE_renderEquippedItems; public class Namer1_7_10 extends Namer { @@ -9,203 +14,12 @@ public class Namer1_7_10 extends Namer { } public void setNames1_7_10() { - block_ = c("aji"); - blockFlowerPot_ = c("ald"); - minecraft_ = c("bao"); - guiButton_ = c("bcb"); - guiOptions_ = c("bdm"); - guiScreen_ = c("bdw"); - modelRenderer_ = c("bix"); - worldClient_ = c("bjf"); - effectRenderer_ = c("bkn"); entityRenderer_ = c("blt"); - glAllocation_ = c("ban"); - itemRenderer_ = c("bly"); - openGlHelper_ = c("buu"); - renderBlocks_ = c("blm"); - renderGlobal_ = c("bma"); - tessellator_ = c("bmh"); - worldRenderer_ = c("blo"); - frustrum_ = c("bmx"); - iCamera_ = c("bmv"); - render_ = c("bno"); - renderDragon_ = c("bnl"); - renderEnderman_ = c("bnm"); - renderSpider_ = c("bov"); - renderManager_ = c("bnn"); rendererLivingE_ = c("boh"); - abstractTexture_ = c("bpp"); - dynamicTexture_ = c("bpq"); - iTextureObject_ = c("bqh"); - layeredTexture_ = c("bpt"); - simpleTexture_ = c("bpu"); - stitcher_ = c("bpv"); - textureAtlasSpri_ = c("bqd"); - textureClock_ = c("bql"); - textureCompass_ = c("bqm"); - textureManager_ = c("bqf"); - textureMap_ = c("bpz"); - textureUtil_ = c("bqi"); - textureDownload_ = c("bpr"); - iResource_ = c("bqw"); - iResourceManager_ = c("bqy"); - gameSettings_ = c("bbj"); - tessVertexState_ = c("bmi"); - entity_ = c("sa"); entityLivingBase_ = c("sv"); - entityDragon_ = c("xa"); - entityEnderman_ = c("ya"); - entitySpider_ = c("yn"); - entityPlayer_ = c("yz"); - item_ = c("adb"); - itemBlock_ = c("abh"); - itemStack_ = c("add"); - movingObjectPos_ = c("azu"); - resourceLocation_ = c("bqx"); - vec3_ = c("azw"); - iBlockAccess_ = c("ahl"); - world_ = c("ahb"); - entityLivingBase_deathTime = f(entityLivingBase_, "aA", "I"); - entityLivingBase_hurtTime = f(entityLivingBase_, "ax", "I"); - entityRenderer_cameraZoom = f(entityRenderer_, "af", "D"); - entityRenderer_mc = f(entityRenderer_, "t", minecraft_.desc); - gameSettings_renderDistance = f(gameSettings_, "c", "I"); - guiButton_id = f(guiButton_, "k", "I"); - guiScreen_buttonList = f(guiScreen_, "n", "Ljava/util/List;"); - guiScreen_width = f(guiScreen_, "l", "I"); - guiScreen_height = f(guiScreen_, "m", "I"); - guiScreen_mc = f(guiScreen_, "k", minecraft_.desc); - guiOptions_options = f(guiOptions_, "h", gameSettings_.desc); - itemBlock_block = f(itemBlock_, "a", block_.desc); - itemRenderer_itemToRender = f(itemRenderer_, "e", itemStack_.desc); - layeredTexture_layeredTextureNames = f(layeredTexture_, "b", "Ljava/util/List;"); - minecraft_renderGlobal = f(minecraft_, "g", renderGlobal_.desc); - minecraft_gameSettings = f(minecraft_, "u", gameSettings_.desc); - modelRenderer_displayList = f(modelRenderer_, "u", "I"); - modelRenderer_compiled = f(modelRenderer_, "t", "Z"); - renderGlobal_glSkyList = f(renderGlobal_, "G", "I"); - renderGlobal_worldRenderers = f(renderGlobal_, "v", "[" + worldRenderer_.desc); - rendererLivingE_mainModel = f(rendererLivingE_, "i", null); - rendererLivingE_renderPassModel = f(rendererLivingE_, "j", null); - renderManager_entityRenderMap = f(renderManager_, "q", "Ljava/util/Map;"); - renderManager_instance = f(renderManager_, "a", renderManager_.desc); - simpleTexture_textureLocation = f(simpleTexture_, "b", resourceLocation_.desc); - tessellator_floatBuffer = f(tessellator_, "d", "Ljava/nio/FloatBuffer;"); - tessellator_shortBuffer = f(tessellator_, "e", "Ljava/nio/ShortBuffer;"); - tessellator_intBuffer = f(tessellator_, "c", "Ljava/nio/IntBuffer;"); - tessellator_byteBuffer = f(tessellator_, "b", "Ljava/nio/ByteBuffer;"); - tessellator_rawBuffer = f(tessellator_, "f", "[I"); - tessellator_vertexCount = f(tessellator_, "g", "I"); - tessellator_hasNormals = f(tessellator_, "o", "Z"); - textureAtlasSpri_width = f(textureAtlasSpri_, "e", null); - textureAtlasSpri_height = f(textureAtlasSpri_, "f", null); - textureAtlasSpri_border = f(textureAtlasSpri_, "k", null); - textureMap_anisotropic = f(textureMap_, "k", null); - textureDownload_textureUploaded = f(textureDownload_, "j", "Z"); - vec3_xCoord = f(vec3_, "a", "D"); - - abstractTexture_deleteGlTexture = m(abstractTexture_, "c", "()V"); - block_getAoLight = m(block_, "I", "()F"); - block_getBlockFromItem = m(block_, "a", "(" + item_.desc + ")" + block_.desc); - dynamicTexture_updateDynamicTexture = m(dynamicTexture_, "a", "()V"); - effectRenderer_renderLitParticles = m(effectRenderer_, "b", "(" + entity_.desc + "F)V"); - effectRenderer_renderParticles = m(effectRenderer_, "a", "(" + entity_.desc + "F)V"); - entity_getBrightness = m(entity_, "d", "(F)F"); - entityRenderer_enableLightmap = m(entityRenderer_, "b", "(D)V"); - entityRenderer_updateFogColor = m(entityRenderer_, "j", "(F)V"); - entityRenderer_setupFog = m(entityRenderer_, "a", "(IF)V"); - entityRenderer_setFogColorBuffer = m(entityRenderer_, "a", "(FFFF)Ljava/nio/FloatBuffer;"); - entityRenderer_renderWorld = m(entityRenderer_, "a", "(FJ)V"); - entityRenderer_renderRainSnow = m(entityRenderer_, "e", "(F)V"); entityRenderer_renderHand = m(entityRenderer_, "b", "(FI)V"); - entityRenderer_setupCameraTransform = m(entityRenderer_, "a", "(FI)V"); - entityRenderer_disableLightmap = m(entityRenderer_, "a", "(D)V"); - entityRenderer_renderCloudsCheck = m(entityRenderer_, "a", "(" + renderGlobal_.desc + "F)V"); - gameSettings_saveOptions = m(gameSettings_, "b", "()V"); - gameSettings_shouldRenderClouds = m(gameSettings_, "d", "()Z"); - glAllocation_createDirectByteBuffer = m(glAllocation_, "c", "(I)Ljava/nio/ByteBuffer;"); - glAllocation_createDirectIntBuffer = m(glAllocation_, "f", "(I)Ljava/nio/IntBuffer;"); - glAllocation_deleteDisplayLists = m(glAllocation_, "b", "(I)V"); - iCamera_setPosition = m(iCamera_, "a", "(DDD)V"); - iResourceManager_getResource = m(iResourceManager_, "a", "(" + resourceLocation_.desc + ")" + iResource_.desc); - itemRenderer_renderItem = m(itemRenderer_, "a", "(" + entityLivingBase_.desc + itemStack_.desc + "I)V"); - itemRenderer_renderItemInFirstPerson = m(itemRenderer_, "a", "(F)V"); - itemRenderer_renderOverlays = m(itemRenderer_, "b", "(F)V"); - itemRenderer_updateEquipped = m(itemRenderer_, "a", "()V"); - iTextureObject_loadTexture = m(iTextureObject_, "a", "(" + iResourceManager_.desc + ")V"); - iTextureObject_getGlTextureId = m(iTextureObject_, "b", "()I"); - minecraft_displayGuiScreen = m(minecraft_, "a", "(" + guiScreen_.desc + ")V"); - openGlHelper_setActiveTexture = m(openGlHelper_, "j", "(I)V"); - render_renderShadow = m(render_, "c", "(" + entity_.desc + "DDDFF)V"); - renderBlocks_renderBlockFluids = m(renderBlocks_, "p", "(" + block_.desc + "III)Z"); - renderBlocks_renderStdBlockWithCM = m(renderBlocks_, "d", "(" + block_.desc + "IIIFFF)Z"); - renderBlocks_renderBlockSandFalling = m(renderBlocks_, "a", "(" + block_.desc + world_.desc + "IIII)V"); - renderBlocks_renderStdBlockWithAO = m(renderBlocks_, "a", "(" + block_.desc + "IIIFFF)Z"); - renderBlocks_renderBlockCactusImpl = m(renderBlocks_, "e", "(" + block_.desc + "IIIFFF)Z"); - renderBlocks_renderBlockDoor = m(renderBlocks_, "u", "(" + block_.desc + "III)Z"); - renderBlocks_renderBlockBed = m(renderBlocks_, "v", "(" + block_.desc + "III)Z"); - renderBlocks_renderBlockByRenderType = m(renderBlocks_, "b", "(" + block_.desc + "III)Z"); - renderBlocks_renderBlockFlowerPot = m(renderBlocks_, "a", "(" + blockFlowerPot_.desc + "III)Z"); - renderBlocks_renderStdBlockWithAOP = m(renderBlocks_, "b", "(" + block_.desc + "IIIFFF)Z"); - renderDragon_shouldRenderPass = m(renderDragon_, "a", "(" + entityDragon_.desc + "IF)I"); - renderEnderman_shouldRenderPass = m(renderEnderman_, "a", "(" + entityEnderman_.desc + "IF)I"); - renderSpider_shouldRenderPass = m(renderSpider_, "a", "(" + entitySpider_.desc + "IF)I"); rendererLivingE_doRender = m(rendererLivingE_, "a", "(" + entityLivingBase_.desc + "DDDFF)V"); rendererLivingE_renderEquippedItems = m(rendererLivingE_, "c", "(" + entityLivingBase_.desc + "F)V"); - rendererLivingE_getColorMultiplier = m(rendererLivingE_, "a", "(" + entityLivingBase_.desc + "FF)I"); - rendererLivingE_renderLabel = m( - rendererLivingE_, - "a", - "(" + entityLivingBase_.desc + "DDDLjava/lang/String;FD)V"); - renderGlobal_renderEntities = m(renderGlobal_, "a", "(" + entityLivingBase_.desc + iCamera_.desc + "F)V"); - renderGlobal_renderSky = m(renderGlobal_, "a", "(F)V"); - renderGlobal_drawBlockDamageTexture = m( - renderGlobal_, - "a", - "(" + tessellator_.desc + entityPlayer_.desc + "F)V"); - renderGlobal_renderClouds = m(renderGlobal_, "b", "(F)V"); - renderGlobal_sortAndRender = m(renderGlobal_, "a", "(" + entityLivingBase_.desc + "ID)I"); - renderGlobal_clipRenderersByFrustum = m(renderGlobal_, "a", "(" + iCamera_.desc + "F)V"); - renderGlobal_drawSelectionBox = m( - renderGlobal_, - "a", - "(" + entityPlayer_.desc + movingObjectPos_.desc + "IF)V"); - renderGlobal_renderAllRenderLists = m(renderGlobal_, "a", "(ID)V"); - stitcher_getCurrentWidth = m(stitcher_, "a", "()I"); - tessellator_sortQuad = m(tessellator_, "a", "(FFF)" + tessVertexState_.desc); - tessellator_addTranslation = m(tessellator_, "d", "(FFF)V"); - tessellator_setNormal = m(tessellator_, "c", "(FFF)V"); - tessellator_addVertex = m(tessellator_, "a", "(DDD)V"); - tessellator_reset = m(tessellator_, "d", "()V"); - tessellator_draw = m(tessellator_, "a", "()I"); - textureAtlasSpri_loadSprite = m(textureAtlasSpri_, "-", "(" + iResource_.desc + ")V"); - textureAtlasSpri_getFrameTextureData = m(textureAtlasSpri_, "a", "(I)[[I"); - textureAtlasSpri_getIconName = m(textureAtlasSpri_, "g", "()Ljava/lang/String;"); - textureAtlasSpri_updateAnimation = m(textureAtlasSpri_, "j", "()V"); - textureCompass_updateCompass = m(textureCompass_, "a", "(" + world_.desc + "DDDZZ)V"); - textureManager_onResourceManagerReload = m(textureManager_, "a", "(" + iResourceManager_.desc + ")V"); - textureManager_bindTexture = m(textureManager_, "a", "(" + resourceLocation_.desc + ")V"); - textureMap_loadTextureAtlas = m(textureMap_, "b", "(" + iResourceManager_.desc + ")V"); - textureMap_getIconResLoc = m(textureMap_, "a", "(" + resourceLocation_.desc + "I)" + resourceLocation_.desc); - textureMap_updateAnimations = m(textureMap_, "d", "()V"); - textureUtil_uploadTexture = m(textureUtil_, "a", "(I[III)V"); - textureUtil_uploadTextureImageAllocate = m(textureUtil_, "a", "(ILjava/awt/image/BufferedImage;ZZ)I"); - textureUtil_allocateTexture = m(textureUtil_, "a", "(III)V"); - textureUtil_allocateTextureMipmapAniso = m(textureUtil_, "a", "(IIIIF)V"); - textureUtil_uploadTexSub = m(textureUtil_, "a", "([[IIIIIZZ)V"); - textureUtil_bindTexture = m(textureUtil_, "b", "(I)V"); - world_getCelestialAngle = m(world_, "c", "(F)F"); - world_getRainStrength = m(world_, "j", "(F)F"); - modelRenderer_render = m(modelRenderer_, "a", "(F)V"); - modelRenderer_renderWithRotation = m(modelRenderer_, "b", "(F)V"); - - guiOptions_buttonList = f(guiOptions_, guiScreen_buttonList); - guiOptions_width = f(guiOptions_, guiScreen_width); - guiOptions_height = f(guiOptions_, guiScreen_height); - guiOptions_mc = f(guiOptions_, guiScreen_mc); - frustrum_setPosition = m(frustrum_, iCamera_setPosition); - worldClient_getCelestialAngle = m(worldClient_, world_getCelestialAngle); - worldClient_getRainStrength = m(worldClient_, world_getRainStrength); } } diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/NamerMcp.java b/src/main/java/com/gtnewhorizons/angelica/transform/NamerMcp.java index e3d80de53..d60745e26 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/NamerMcp.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/NamerMcp.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import com.gtnewhorizons.angelica.loading.AngelicaTweaker; import com.gtnewhorizons.angelica.transform.Names.Clas; import com.gtnewhorizons.angelica.transform.Names.Fiel; import com.gtnewhorizons.angelica.transform.Names.Meth; @@ -38,8 +39,8 @@ public class NamerMcp extends NamerSrg { } } - Map loadNameMapCSV(String fileName) { - Map map = new HashMap(); + Map loadNameMapCSV(String fileName) { + Map map = new HashMap<>(); BufferedReader rd = null; try { rd = new BufferedReader(new FileReader(fileName)); @@ -72,20 +73,20 @@ public class NamerMcp extends NamerSrg { nameMap = loadReobfMap(confPath + "packaged.srg"); for (Clas c : ac) { String s = nameMap.get(c.name); - System.out.printf("C %s %s\n", c.name, s); + AngelicaTweaker.LOGGER.trace("C {} {}", c.name, s); } for (Fiel f : af) { String s = nameMap.get(f.clas + "/" + f.name); - System.out.printf("F %s %s\n", f.name, s); + AngelicaTweaker.LOGGER.trace("F {} {}", f.name, s); } for (Meth m : am) { String s = nameMap.get(m.clas + "/" + m.name + m.desc); - System.out.printf("M %s %s\n", m.name, s); + AngelicaTweaker.LOGGER.trace("M {} {}", m.name, s); } } - Map loadReobfMap(String fileName) { - Map map = new HashMap(); + Map loadReobfMap(String fileName) { + Map map = new HashMap<>(); BufferedReader rd = null; try { rd = new BufferedReader(new FileReader(fileName)); diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/NamerSrg.java b/src/main/java/com/gtnewhorizons/angelica/transform/NamerSrg.java index 22bd7903f..95e76b6ee 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/NamerSrg.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/NamerSrg.java @@ -9,224 +9,12 @@ public class NamerSrg extends Namer { } public void setNamesSrg() { - block_ = c("net/minecraft/block/Block"); - blockFlowerPot_ = c("net/minecraft/block/BlockFlowerPot"); - minecraft_ = c("net/minecraft/client/Minecraft"); - guiButton_ = c("net/minecraft/client/gui/GuiButton"); - guiOptions_ = c("net/minecraft/client/gui/GuiOptions"); - guiScreen_ = c("net/minecraft/client/gui/GuiScreen"); - modelRenderer_ = c("net/minecraft/client/model/ModelRenderer"); - worldClient_ = c("net/minecraft/client/multiplayer/WorldClient"); - effectRenderer_ = c("net/minecraft/client/particle/EffectRenderer"); entityRenderer_ = c("net/minecraft/client/renderer/EntityRenderer"); - glAllocation_ = c("net/minecraft/client/renderer/GLAllocation"); - itemRenderer_ = c("net/minecraft/client/renderer/ItemRenderer"); - openGlHelper_ = c("net/minecraft/client/renderer/OpenGlHelper"); - renderBlocks_ = c("net/minecraft/client/renderer/RenderBlocks"); - renderGlobal_ = c("net/minecraft/client/renderer/RenderGlobal"); - tessellator_ = c("net/minecraft/client/renderer/Tessellator"); - worldRenderer_ = c("net/minecraft/client/renderer/WorldRenderer"); - frustrum_ = c("net/minecraft/client/renderer/culling/Frustrum"); - iCamera_ = c("net/minecraft/client/renderer/culling/ICamera"); - render_ = c("net/minecraft/client/renderer/entity/Render"); - renderDragon_ = c("net/minecraft/client/renderer/entity/RenderDragon"); - renderEnderman_ = c("net/minecraft/client/renderer/entity/RenderEnderman"); - renderSpider_ = c("net/minecraft/client/renderer/entity/RenderSpider"); - renderManager_ = c("net/minecraft/client/renderer/entity/RenderManager"); rendererLivingE_ = c("net/minecraft/client/renderer/entity/RendererLivingEntity"); - abstractTexture_ = c("net/minecraft/client/renderer/texture/AbstractTexture"); - dynamicTexture_ = c("net/minecraft/client/renderer/texture/DynamicTexture"); - iTextureObject_ = c("net/minecraft/client/renderer/texture/ITextureObject"); - layeredTexture_ = c("net/minecraft/client/renderer/texture/LayeredTexture"); - simpleTexture_ = c("net/minecraft/client/renderer/texture/SimpleTexture"); - stitcher_ = c("net/minecraft/client/renderer/texture/Stitcher"); - textureAtlasSpri_ = c("net/minecraft/client/renderer/texture/TextureAtlasSprite"); - textureClock_ = c("net/minecraft/client/renderer/texture/TextureClock"); - textureCompass_ = c("net/minecraft/client/renderer/texture/TextureCompass"); - textureManager_ = c("net/minecraft/client/renderer/texture/TextureManager"); - textureMap_ = c("net/minecraft/client/renderer/texture/TextureMap"); - textureUtil_ = c("net/minecraft/client/renderer/texture/TextureUtil"); - textureDownload_ = c("net/minecraft/client/renderer/ThreadDownloadImageData"); - iResource_ = c("net/minecraft/client/resources/IResource"); - iResourceManager_ = c("net/minecraft/client/resources/IResourceManager"); - gameSettings_ = c("net/minecraft/client/settings/GameSettings"); - tessVertexState_ = c("net/minecraft/client/shader/TesselatorVertexState"); - entity_ = c("net/minecraft/entity/Entity"); entityLivingBase_ = c("net/minecraft/entity/EntityLivingBase"); - entityDragon_ = c("net/minecraft/entity/boss/EntityDragon"); - entityEnderman_ = c("net/minecraft/entity/monster/EntityEnderman"); - entitySpider_ = c("net/minecraft/entity/monster/EntitySpider"); - entityPlayer_ = c("net/minecraft/entity/player/EntityPlayer"); - item_ = c("net/minecraft/item/Item"); - itemBlock_ = c("net/minecraft/item/ItemBlock"); - itemStack_ = c("net/minecraft/item/ItemStack"); - movingObjectPos_ = c("net/minecraft/util/MovingObjectPosition"); - resourceLocation_ = c("net/minecraft/util/ResourceLocation"); - vec3_ = c("net/minecraft/util/Vec3"); - iBlockAccess_ = c("net/minecraft/world/IBlockAccess"); - world_ = c("net/minecraft/world/World"); - entityLivingBase_deathTime = f(entityLivingBase_, "field_70725_aQ", "I"); - entityLivingBase_hurtTime = f(entityLivingBase_, "field_70737_aN", "I"); - entityRenderer_cameraZoom = f(entityRenderer_, "field_78503_V", "D"); - entityRenderer_mc = f(entityRenderer_, "field_78531_r", minecraft_.desc); - gameSettings_renderDistance = f(gameSettings_, "field_151451_c", "I"); - guiButton_id = f(guiButton_, "field_146127_k", "I"); - guiScreen_buttonList = f(guiScreen_, "field_146292_n", "Ljava/util/List;"); - guiScreen_width = f(guiScreen_, "field_146294_l", "I"); - guiScreen_height = f(guiScreen_, "field_146295_m", "I"); - guiScreen_mc = f(guiScreen_, "field_146297_k", minecraft_.desc); - guiOptions_options = f(guiOptions_, "field_146443_h", gameSettings_.desc); - itemBlock_block = f(itemBlock_, "field_150939_a", block_.desc); - itemRenderer_itemToRender = f(itemRenderer_, "field_78453_b", itemStack_.desc); - layeredTexture_layeredTextureNames = f(layeredTexture_, "field_110567_b", "Ljava/util/List;"); - minecraft_renderGlobal = f(minecraft_, "field_71438_f", renderGlobal_.desc); - minecraft_gameSettings = f(minecraft_, "field_71474_y", gameSettings_.desc); - modelRenderer_displayList = f(modelRenderer_, "field_78811_r", "I"); - modelRenderer_compiled = f(modelRenderer_, "field_78812_q", "Z"); - renderGlobal_glSkyList = f(renderGlobal_, "field_72771_w", "I"); - renderGlobal_worldRenderers = f(renderGlobal_, "field_72765_l", "[" + worldRenderer_.desc); - rendererLivingE_mainModel = f(rendererLivingE_, "field_77045_g", null); - rendererLivingE_renderPassModel = f(rendererLivingE_, "field_77046_h", null); - renderManager_entityRenderMap = f(renderManager_, "field_78729_o", "Ljava/util/Map;"); - renderManager_instance = f(renderManager_, "field_78727_a", renderManager_.desc); - simpleTexture_textureLocation = f(simpleTexture_, "field_110568_b", resourceLocation_.desc); - tessellator_floatBuffer = f(tessellator_, "field_147566_d", "Ljava/nio/FloatBuffer;"); - tessellator_shortBuffer = f(tessellator_, "field_147567_e", "Ljava/nio/ShortBuffer;"); - tessellator_intBuffer = f(tessellator_, "field_147568_c", "Ljava/nio/IntBuffer;"); - tessellator_byteBuffer = f(tessellator_, "field_78394_d", "Ljava/nio/ByteBuffer;"); - tessellator_rawBuffer = f(tessellator_, "field_78405_h", "[I"); - tessellator_vertexCount = f(tessellator_, "field_78406_i", "I"); - tessellator_hasNormals = f(tessellator_, "field_78413_q", "Z"); - textureAtlasSpri_width = f(textureAtlasSpri_, "field_130223_c", null); - textureAtlasSpri_height = f(textureAtlasSpri_, "field_130224_d", null); - textureAtlasSpri_border = f(textureAtlasSpri_, "field_147966_k", null); - textureMap_anisotropic = f(textureMap_, "field_147637_k", null); - textureDownload_textureUploaded = f(textureDownload_, "field_110559_g", "Z"); - vec3_xCoord = f(vec3_, "field_72450_a", "D"); - - abstractTexture_deleteGlTexture = m(abstractTexture_, "func_147631_c", "()V"); - block_getAoLight = m(block_, "func_149685_I", "()F"); - block_getBlockFromItem = m(block_, "func_149634_a", "(" + item_.desc + ")" + block_.desc); - dynamicTexture_updateDynamicTexture = m(dynamicTexture_, "func_110564_a", "()V"); - effectRenderer_renderLitParticles = m(effectRenderer_, "func_78872_b", "(" + entity_.desc + "F)V"); - effectRenderer_renderParticles = m(effectRenderer_, "func_78874_a", "(" + entity_.desc + "F)V"); - entity_getBrightness = m(entity_, "func_70013_c", "(F)F"); - entityRenderer_enableLightmap = m(entityRenderer_, "func_78463_b", "(D)V"); - entityRenderer_updateFogColor = m(entityRenderer_, "func_78466_h", "(F)V"); - entityRenderer_setupFog = m(entityRenderer_, "func_78468_a", "(IF)V"); - entityRenderer_setFogColorBuffer = m(entityRenderer_, "func_78469_a", "(FFFF)Ljava/nio/FloatBuffer;"); - entityRenderer_renderWorld = m(entityRenderer_, "func_78471_a", "(FJ)V"); - entityRenderer_renderRainSnow = m(entityRenderer_, "func_78474_d", "(F)V"); entityRenderer_renderHand = m(entityRenderer_, "func_78476_b", "(FI)V"); - entityRenderer_setupCameraTransform = m(entityRenderer_, "func_78479_a", "(FI)V"); - entityRenderer_disableLightmap = m(entityRenderer_, "func_78483_a", "(D)V"); - entityRenderer_renderCloudsCheck = m(entityRenderer_, "func_82829_a", "(" + renderGlobal_.desc + "F)V"); - gameSettings_saveOptions = m(gameSettings_, "func_74303_b", "()V"); - gameSettings_shouldRenderClouds = m(gameSettings_, "func_74309_c", "()Z"); - glAllocation_createDirectByteBuffer = m(glAllocation_, "func_74524_c", "(I)Ljava/nio/ByteBuffer;"); - glAllocation_createDirectIntBuffer = m(glAllocation_, "func_74527_f", "(I)Ljava/nio/IntBuffer;"); - glAllocation_deleteDisplayLists = m(glAllocation_, "func_74523_b", "(I)V"); - iCamera_setPosition = m(iCamera_, "func_78547_a", "(DDD)V"); - iResourceManager_getResource = m( - iResourceManager_, - "func_110536_a", - "(" + resourceLocation_.desc + ")" + iResource_.desc); - itemRenderer_renderItem = m( - itemRenderer_, - "func_78443_a", - "(" + entityLivingBase_.desc + itemStack_.desc + "I)V"); - itemRenderer_renderItemInFirstPerson = m(itemRenderer_, "func_78440_a", "(F)V"); - itemRenderer_renderOverlays = m(itemRenderer_, "func_78447_b", "(F)V"); - itemRenderer_updateEquipped = m(itemRenderer_, "func_78441_a", "()V"); - iTextureObject_loadTexture = m(iTextureObject_, "func_110551_a", "(" + iResourceManager_.desc + ")V"); - iTextureObject_getGlTextureId = m(iTextureObject_, "func_110552_b", "()I"); - minecraft_displayGuiScreen = m(minecraft_, "func_147108_a", "(" + guiScreen_.desc + ")V"); - openGlHelper_setActiveTexture = m(openGlHelper_, "func_77473_a", "(I)V"); - render_renderShadow = m(render_, "func_76975_c", "(" + entity_.desc + "DDDFF)V"); - renderBlocks_renderBlockFluids = m(renderBlocks_, "func_147721_p", "(" + block_.desc + "III)Z"); - renderBlocks_renderStdBlockWithCM = m(renderBlocks_, "func_147736_d", "(" + block_.desc + "IIIFFF)Z"); - renderBlocks_renderBlockSandFalling = m( - renderBlocks_, - "func_147749_a", - "(" + block_.desc + world_.desc + "IIII)V"); - renderBlocks_renderStdBlockWithAO = m(renderBlocks_, "func_147751_a", "(" + block_.desc + "IIIFFF)Z"); - renderBlocks_renderBlockCactusImpl = m(renderBlocks_, "func_147754_e", "(" + block_.desc + "IIIFFF)Z"); - renderBlocks_renderBlockDoor = m(renderBlocks_, "func_147760_u", "(" + block_.desc + "III)Z"); - renderBlocks_renderBlockBed = m(renderBlocks_, "func_147773_v", "(" + block_.desc + "III)Z"); - renderBlocks_renderBlockByRenderType = m(renderBlocks_, "func_147805_b", "(" + block_.desc + "III)Z"); - renderBlocks_renderBlockFlowerPot = m(renderBlocks_, "func_147752_a", "(" + blockFlowerPot_.desc + "III)Z"); - renderBlocks_renderStdBlockWithAOP = m(renderBlocks_, "func_147808_b", "(" + block_.desc + "IIIFFF)Z"); - renderDragon_shouldRenderPass = m(renderDragon_, "func_77032_a", "(" + entityDragon_.desc + "IF)I"); - renderEnderman_shouldRenderPass = m(renderEnderman_, "func_77032_a", "(" + entityEnderman_.desc + "IF)I"); - renderSpider_shouldRenderPass = m(renderSpider_, "func_77032_a", "(" + entitySpider_.desc + "IF)I"); rendererLivingE_doRender = m(rendererLivingE_, "func_76986_a", "(" + entityLivingBase_.desc + "DDDFF)V"); rendererLivingE_renderEquippedItems = m(rendererLivingE_, "func_77029_c", "(" + entityLivingBase_.desc + "F)V"); - rendererLivingE_getColorMultiplier = m(rendererLivingE_, "func_77030_a", "(" + entityLivingBase_.desc + "FF)I"); - rendererLivingE_renderLabel = m( - rendererLivingE_, - "func_96449_a", - "(" + entityLivingBase_.desc + "DDDLjava/lang/String;FD)V"); - renderGlobal_renderEntities = m( - renderGlobal_, - "func_147589_a", - "(" + entityLivingBase_.desc + iCamera_.desc + "F)V"); - renderGlobal_renderSky = m(renderGlobal_, "func_72714_a", "(F)V"); - renderGlobal_drawBlockDamageTexture = m( - renderGlobal_, - "func_72717_a", - "(" + tessellator_.desc + entityPlayer_.desc + "F)V"); - renderGlobal_renderClouds = m(renderGlobal_, "func_72718_b", "(F)V"); - renderGlobal_sortAndRender = m(renderGlobal_, "func_72719_a", "(" + entityLivingBase_.desc + "ID)I"); - renderGlobal_clipRenderersByFrustum = m(renderGlobal_, "func_72729_a", "(" + iCamera_.desc + "F)V"); - renderGlobal_drawSelectionBox = m( - renderGlobal_, - "func_72731_b", - "(" + entityPlayer_.desc + movingObjectPos_.desc + "IF)V"); - renderGlobal_renderAllRenderLists = m(renderGlobal_, "func_72733_a", "(ID)V"); - stitcher_getCurrentWidth = m(stitcher_, "func_110935_a", "()I"); - tessellator_sortQuad = m(tessellator_, "func_147564_a", "(FFF)" + tessVertexState_.desc); - tessellator_addTranslation = m(tessellator_, "func_78372_c", "(FFF)V"); - tessellator_setNormal = m(tessellator_, "func_78375_b", "(FFF)V"); - tessellator_addVertex = m(tessellator_, "func_78377_a", "(DDD)V"); - tessellator_reset = m(tessellator_, "func_78379_d", "()V"); - tessellator_draw = m(tessellator_, "func_78381_a", "()I"); - textureAtlasSpri_loadSprite = m(textureAtlasSpri_, "func_130100_a", "(" + iResource_.desc + ")V"); - textureAtlasSpri_getFrameTextureData = m(textureAtlasSpri_, "func_147965_a", "(I)[[I"); - textureAtlasSpri_getIconName = m(textureAtlasSpri_, "func_94215_i", "()Ljava/lang/String;"); - textureAtlasSpri_updateAnimation = m(textureAtlasSpri_, "func_94219_l", "()V"); - textureCompass_updateCompass = m(textureCompass_, "func_94241_a", "(" + world_.desc + "DDDZZ)V"); - textureManager_onResourceManagerReload = m( - textureManager_, - "func_110549_a", - "(" + iResourceManager_.desc + ")V"); - textureManager_bindTexture = m(textureManager_, "func_110577_a", "(" + resourceLocation_.desc + ")V"); - textureMap_loadTextureAtlas = m(textureMap_, "func_110571_b", "(" + iResourceManager_.desc + ")V"); - textureMap_getIconResLoc = m( - textureMap_, - "func_147634_a", - "(" + resourceLocation_.desc + "I)" + resourceLocation_.desc); - textureMap_updateAnimations = m(textureMap_, "func_94248_c", "()V"); - textureUtil_uploadTexture = m(textureUtil_, "func_110988_a", "(I[III)V"); - textureUtil_uploadTextureImageAllocate = m( - textureUtil_, - "func_110989_a", - "(ILjava/awt/image/BufferedImage;ZZ)I"); - textureUtil_allocateTexture = m(textureUtil_, "func_110991_a", "(III)V"); - textureUtil_allocateTextureMipmapAniso = m(textureUtil_, "func_147946_a", "(IIIIF)V"); - textureUtil_uploadTexSub = m(textureUtil_, "func_147955_a", "([[IIIIIZZ)V"); - textureUtil_bindTexture = m(textureUtil_, "func_94277_a", "(I)V"); - world_getCelestialAngle = m(world_, "func_72826_c", "(F)F"); - world_getRainStrength = m(world_, "func_72867_j", "(F)F"); - modelRenderer_render = m(modelRenderer_, "func_78785_a", "(F)V"); - modelRenderer_renderWithRotation = m(modelRenderer_, "func_78791_b", "(F)V"); - - guiOptions_buttonList = f(guiOptions_, guiScreen_buttonList); - guiOptions_width = f(guiOptions_, guiScreen_width); - guiOptions_height = f(guiOptions_, guiScreen_height); - guiOptions_mc = f(guiOptions_, guiScreen_mc); - frustrum_setPosition = m(frustrum_, iCamera_setPosition); - worldClient_getCelestialAngle = m(worldClient_, world_getCelestialAngle); - worldClient_getRainStrength = m(worldClient_, world_getRainStrength); } } diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/Names.java b/src/main/java/com/gtnewhorizons/angelica/transform/Names.java index 365bff29a..16e0cbda3 100644 --- a/src/main/java/com/gtnewhorizons/angelica/transform/Names.java +++ b/src/main/java/com/gtnewhorizons/angelica/transform/Names.java @@ -70,196 +70,13 @@ public class Names { } } - static Clas block_; - static Clas blockFlowerPot_; - static Clas minecraft_; - static Clas guiButton_; - static Clas guiOptions_; - static Clas guiScreen_; - static Clas modelRenderer_; - static Clas worldClient_; - static Clas effectRenderer_; static Clas entityRenderer_; - static Clas glAllocation_; - static Clas itemRenderer_; - static Clas openGlHelper_; - static Clas renderBlocks_; - static Clas renderGlobal_; - static Clas tessellator_; - static Clas worldRenderer_; - static Clas frustrum_; - static Clas iCamera_; - static Clas render_; - static Clas renderDragon_; - static Clas renderEnderman_; - static Clas renderSpider_; - static Clas renderManager_; static Clas rendererLivingE_; - static Clas abstractTexture_; - static Clas dynamicTexture_; - static Clas iTextureObject_; - static Clas layeredTexture_; - static Clas simpleTexture_; - static Clas stitcher_; - static Clas textureAtlasSpri_; - static Clas textureClock_; - static Clas textureCompass_; - static Clas textureManager_; - static Clas textureMap_; - static Clas textureUtil_; - static Clas textureDownload_; - static Clas iResource_; - static Clas iResourceManager_; - static Clas gameSettings_; - static Clas tessVertexState_; - static Clas entity_; static Clas entityLivingBase_; - static Clas entityDragon_; - static Clas entityEnderman_; - static Clas entitySpider_; - static Clas entityPlayer_; - static Clas item_; - static Clas itemBlock_; - static Clas itemStack_; - static Clas movingObjectPos_; - static Clas resourceLocation_; - static Clas vec3_; - static Clas iBlockAccess_; - static Clas world_; - static Fiel entityLivingBase_deathTime; - static Fiel entityLivingBase_hurtTime; - static Fiel entityRenderer_cameraZoom; - static Fiel entityRenderer_mc; - static Fiel gameSettings_renderDistance; - static Fiel guiButton_id; - static Fiel guiScreen_buttonList; - static Fiel guiScreen_width; - static Fiel guiScreen_height; - static Fiel guiScreen_mc; - static Fiel guiOptions_options; - static Fiel itemBlock_block; - static Fiel itemRenderer_itemToRender; - static Fiel layeredTexture_layeredTextureNames; - static Fiel minecraft_renderGlobal; - static Fiel minecraft_gameSettings; - static Fiel modelRenderer_displayList; - static Fiel modelRenderer_compiled; - static Fiel renderGlobal_glSkyList; - static Fiel renderGlobal_worldRenderers; - static Fiel rendererLivingE_mainModel; - static Fiel rendererLivingE_renderPassModel; - static Fiel renderManager_entityRenderMap; - static Fiel renderManager_instance; - static Fiel simpleTexture_textureLocation; - static Fiel tessellator_floatBuffer; - static Fiel tessellator_shortBuffer; - static Fiel tessellator_intBuffer; - static Fiel tessellator_byteBuffer; - static Fiel tessellator_rawBuffer; - static Fiel tessellator_vertexCount; - static Fiel tessellator_hasNormals; - static Fiel textureAtlasSpri_width; - static Fiel textureAtlasSpri_height; - static Fiel textureAtlasSpri_border; - static Fiel textureMap_anisotropic; - static Fiel textureDownload_textureUploaded; - static Fiel vec3_xCoord; - - static Fiel guiOptions_buttonList; - static Fiel guiOptions_width; - static Fiel guiOptions_height; - static Fiel guiOptions_mc; - - static Meth abstractTexture_deleteGlTexture; - static Meth block_getAoLight; - static Meth block_getBlockFromItem; - static Meth dynamicTexture_updateDynamicTexture; - static Meth effectRenderer_renderLitParticles; - static Meth effectRenderer_renderParticles; - static Meth entity_getBrightness; - static Meth entityRenderer_enableLightmap; - static Meth entityRenderer_updateFogColor; - static Meth entityRenderer_setupFog; - static Meth entityRenderer_setFogColorBuffer; - static Meth entityRenderer_renderWorld; - static Meth entityRenderer_renderRainSnow; static Meth entityRenderer_renderHand; - static Meth entityRenderer_setupCameraTransform; - static Meth entityRenderer_disableLightmap; - static Meth entityRenderer_renderCloudsCheck; - static Meth gameSettings_saveOptions; - static Meth gameSettings_shouldRenderClouds; - static Meth glAllocation_createDirectByteBuffer; - static Meth glAllocation_createDirectIntBuffer; - static Meth glAllocation_deleteDisplayLists; - static Meth iCamera_setPosition; - static Meth iResourceManager_getResource; - static Meth itemRenderer_renderItem; - static Meth itemRenderer_renderItemInFirstPerson; - static Meth itemRenderer_renderOverlays; - static Meth itemRenderer_updateEquipped; - static Meth iTextureObject_loadTexture; - static Meth iTextureObject_getGlTextureId; - static Meth minecraft_displayGuiScreen; - static Meth openGlHelper_setActiveTexture; - static Meth render_renderShadow; - static Meth renderBlocks_renderBlockFluids; - static Meth renderBlocks_renderStdBlockWithCM; - static Meth renderBlocks_renderBlockSandFalling; - static Meth renderBlocks_renderStdBlockWithAO; - static Meth renderBlocks_renderBlockCactusImpl; - static Meth renderBlocks_renderBlockDoor; - static Meth renderBlocks_renderBlockBed; - static Meth renderBlocks_renderBlockByRenderType; - static Meth renderBlocks_renderBlockFlowerPot; - static Meth renderBlocks_renderStdBlockWithAOP; - static Meth renderDragon_shouldRenderPass; - static Meth renderEnderman_shouldRenderPass; - static Meth renderSpider_shouldRenderPass; static Meth rendererLivingE_doRender; static Meth rendererLivingE_renderEquippedItems; - static Meth rendererLivingE_getColorMultiplier; - static Meth rendererLivingE_renderLabel; - static Meth renderGlobal_renderEntities; - static Meth renderGlobal_renderSky; - static Meth renderGlobal_drawBlockDamageTexture; - static Meth renderGlobal_renderClouds; - static Meth renderGlobal_sortAndRender; - static Meth renderGlobal_clipRenderersByFrustum; - static Meth renderGlobal_drawSelectionBox; - static Meth renderGlobal_renderAllRenderLists; - static Meth stitcher_getCurrentWidth; - static Meth tessellator_sortQuad; - static Meth tessellator_addTranslation; - static Meth tessellator_setNormal; - static Meth tessellator_addVertex; - static Meth tessellator_reset; - static Meth tessellator_draw; - static Meth textureAtlasSpri_loadSprite; - static Meth textureAtlasSpri_getFrameTextureData; - static Meth textureAtlasSpri_getIconName; - static Meth textureAtlasSpri_updateAnimation; - static Meth textureCompass_updateCompass; - static Meth textureManager_onResourceManagerReload; - static Meth textureManager_bindTexture; - static Meth textureMap_loadTextureAtlas; - static Meth textureMap_getIconResLoc; - static Meth textureMap_updateAnimations; - static Meth textureUtil_uploadTexture; - static Meth textureUtil_uploadTextureImageAllocate; - static Meth textureUtil_allocateTexture; - static Meth textureUtil_allocateTextureMipmapAniso; - static Meth textureUtil_uploadTexSub; - static Meth textureUtil_bindTexture; - static Meth world_getCelestialAngle; - static Meth world_getRainStrength; - static Meth modelRenderer_render; - static Meth modelRenderer_renderWithRotation; - - static Meth frustrum_setPosition; - static Meth worldClient_getCelestialAngle; - static Meth worldClient_getRainStrength; public static boolean equals(String clas1, String name1, String desc1, String clas2, String name2, String desc2) { return clas1.equals(clas2) && name1.equals(name2) && desc1.equals(desc2); diff --git a/src/main/java/com/gtnewhorizons/angelica/transform/Names.txt b/src/main/java/com/gtnewhorizons/angelica/transform/Names.txt deleted file mode 100644 index c6b60dbdf..000000000 --- a/src/main/java/com/gtnewhorizons/angelica/transform/Names.txt +++ /dev/null @@ -1,167 +0,0 @@ -Block_ "net/minecraft/block/Block" -GuiButton_ "net/minecraft/client/gui/GuiButton" -GuiOptions_ "net/minecraft/client/gui/GuiOptions" -GuiScreen_ "net/minecraft/client/gui/GuiScreen" -Minecraft_ "net/minecraft/client/Minecraft" -ModelRenderer_ "net/minecraft/client/model/ModelRenderer" -WorldClient_ "net/minecraft/client/multiplayer/WorldClient" -EffectRenderer_ "net/minecraft/client/particle/EffectRenderer" -Frustrum_ "net/minecraft/client/renderer/culling/Frustrum" -ICamera_ "net/minecraft/client/renderer/culling/ICamera" -Render_ "net/minecraft/client/renderer/entity/Render" -RenderDragon_ "net/minecraft/client/renderer/entity/RenderDragon" -RenderEnderman_ "net/minecraft/client/renderer/entity/RenderEnderman" -RenderSpider_ "net/minecraft/client/renderer/entity/RenderSpider" -EntityRenderer_ "net/minecraft/client/renderer/EntityRenderer" -RendererLivingEntity_ "net/minecraft/client/renderer/entity/RendererLivingEntity" -GLAllocation_ "net/minecraft/client/renderer/GLAllocation" -ItemRenderer_ "net/minecraft/client/renderer/ItemRenderer" -OpenGlHelper_ "net/minecraft/client/renderer/OpenGlHelper" -RenderBlocks_ "net/minecraft/client/renderer/RenderBlocks" -RenderGlobal_ "net/minecraft/client/renderer/RenderGlobal" -Tessellator_ "net/minecraft/client/renderer/Tessellator" -TesselatorVertexState_ "net/minecraft/client/shader/TesselatorVertexState" -AbstractTexture_ "net/minecraft/client/renderer/texture/AbstractTexture" -DynamicTexure_ "net/minecraft/client/renderer/texture/DynamicTexture" -ITextureObject_ "net/minecraft/client/renderer/texture/ITextureObject" -LayeredTexture_ "net/minecraft/client/renderer/texture/LayeredTexture" -SimpleTexture_ "net/minecraft/client/renderer/texture/SimpleTexture" -Stitcher_ "net/minecraft/client/renderer/texture/Stitcher" -TextureAtlasSprite_ "net/minecraft/client/renderer/texture/TextureAtlasSprite" -TextureClock_ "net/minecraft/client/renderer/texture/TextureClock" -TextureCompass_ "net/minecraft/client/renderer/texture/TextureCompass" -TextureManager_ "net/minecraft/client/renderer/texture/TextureManager" -TextureMap_ "net/minecraft/client/renderer/texture/TextureMap" -TextureUtil_ "net/minecraft/client/renderer/texture/TextureUtil" -ThreadDownloadImageData_ "net/minecraft/client/renderer/ThreadDownloadImageData" -IResource_ "net/minecraft/client/resources/IResource" -IResourceManager_ "net/minecraft/client/resources/IResourceManager" -GameSettings_ "net/minecraft/client/settings/GameSettings" -Entity_ "net/minecraft/entity/Entity" -EntityLivingBase_ "net/minecraft/entity/EntityLivingBase" -EntityDragon_ "net/minecraft/entity/boss/EntityDragon" -EntityEnderman_ "net/minecraft/entity/monster/EntityEnderman" -EntitySpider_ "net/minecraft/entity/monster/EntitySpider" -EntityPlayer_ "net/minecraft/entity/player/EntityPlayer" -MovingObjectPosition "net/minecraft/util/MovingObjectPosition" -ResourceLocation_ "net/minecraft/util/ResourceLocation" -Vec3_ "net/minecraft/util/Vec3" -IBlockAccess_ "net/minecraft/world/IBlockAccess" -World_ "net/minecraft/world/World" - -EntityLivingBase_deathTime EntityLivingBase_ "field_70725_aQ" "I" -EntityLivingBase_hurtTime EntityLivingBase_ "field_70737_aN" "I" -EntityRenderer_cameraZoom EntityRenderer_ "field_78503_V" "D" -EntityRenderer_mc EntityRenderer_ "field_78531_r" "L"+Minecraft_.name+";" -GameSettings_renderDistance GameSettings_ "field_151451_c" "I" -GuiButton_id GuiButton_ "field_146127_k" -GuiOptions_buttonList GuiOptions_ "field_146292_n" -GuiOptions_width GuiOptions_ "field_146294_l" -GuiOptions_height GuiOptions_ "field_146295_m" -GuiOptions_mc GuiOptions_ "field_146297_k" -GuiOptions_options GuiOptions_ "field_146443_h" -LayeredTexture_layeredTextureNames LayeredTexture_ "field_110567_b" -Minecraft_renderGlobal Minecraft_ "field_71438_f" -Minecraft_gameSettings Minecraft_ "field_71474_y" -ModelRenderer_displayList ModelRenderer_ "field_78811_r" -ModelRenderer_compiled ModelRenderer_ "field_78812_q" -RendererLivingEntity_mainModel RendererLivingEntity_ "field_77045_g" -RendererLivingEntity_renderPassModel RendererLivingEntity_ "field_77046_h" -RenderGlobal_glSkyList RenderGlobal_ "field_72771_w" -SimpleTexture_textureLocation SimpleTexture_ "field_110568_b" "L"+ResourceLocation_.name+";" -Tessellator_floatBuffer Tessellator_ "field_147566_d" -Tessellator_shortBuffer Tessellator_ "field_147567_e" -Tessellator_intBuffer Tessellator_ "field_147568_c" -Tessellator_byteBuffer Tessellator_ "field_78394_d" -Tessellator_rawBuffer Tessellator_ "field_78405_h" -Tessellator_vertexCount Tessellator_ "field_78406_i" -Tessellator_hasNormals Tessellator_ "field_78413_q" "Z" -TextureAtlasSprite_width TextureAtlasSprite_ "field_130223_c" -TextureAtlasSprite_height TextureAtlasSprite_ "field_130224_d" -TextureAtlasSprite_border TextureAtlasSprite_ "field_147966_k" -TextureMap_anisotropic TextureMap_ "field_147637_k" -ThreadDownloadImageData_textureUploaded ThreadDownloadImageData_ "field_110559_g" "Z" -Vec3_xCoord Vec3_ "field_72450_a" "D" - -AbstractTexture_deleteGlTexture AbstractTexture_ "func_147631_c" "()V" -Block_getAoLight Block_ "func_149685_I" "(L"+IBlockAccess_+";III)F" -DynamicTexure_updateDynamicTexture DynamicTexure_ "func_110564_a" "()V" -EffectRenderer_renderLitParticles EffectRenderer_ "func_78872_b" "(L"+Entity_.name+";F)V" -EffectRenderer_renderParticles EffectRenderer_ "func_78874_a" "(L"+Entity_.name+";F)V" -Entity_getBrightness Entity_ "func_70013_c" "(F)F" -EntityRenderer_enableLightmap EntityRenderer_ "func_78463_b" "(D)V" -EntityRenderer_updateFogColor EntityRenderer_ "func_78466_h" "(F)V" -EntityRenderer_setupFog EntityRenderer_ "func_78468_a" "(IF)V" -EntityRenderer_setFogColorBuffer EntityRenderer_ "func_78469_a" "(FFFF)Ljava/nio/FloatBuffer;" -EntityRenderer_renderWorld EntityRenderer_ "func_78471_a" "(FJ)V" -EntityRenderer_renderRainSnow EntityRenderer_ "func_78474_d" "(F)V" -EntityRenderer_renderHand EntityRenderer_ "func_78476_b" "(FI)V" -EntityRenderer_setupCameraTransform EntityRenderer_ "func_78479_a" "(FI)V" -EntityRenderer_disableLightmap EntityRenderer_ "func_78483_a" "(D)V" -EntityRenderer_renderCloudsCheck EntityRenderer_ "func_82829_a" "(L"+RenderGlobal_.name+";F)V" -GameSettings_saveOptions GameSettings_ "func_74303_b" "()V" -GameSettings_shouldRenderClouds GameSettings_ "func_74309_c" "()Z" -GLAllocation_createDirectByteBuffer GLAllocation_ "func_74524_c" "(I)Ljava/nio/ByteBuffer;" -GLAllocation_createDirectIntBuffer GLAllocation_ "func_74527_f" "(I)Ljava/nio/IntBuffer;" -GuiOptions_actionPerformed GuiOptions_ "func_146284_a" "(L"+GuiButton_+";)V" -GuiOptions_initGui GuiOptions_ "func_73866_w_" "()V" -ICamera_setPosition ICamera_ "func_78547_a" "(DDD)V" -ItemRenderer_renderItemInFirstPerson ItemRenderer_ "func_78440_a" "(F)V" -ItemRenderer_renderOverlays ItemRenderer_ "func_78447_b" "(F)V" -Minecraft_displayGuiScreen Minecraft_ "func_147108_a" "(L"+GuiScreen_+";)V" -Minecraft_startGame Minecraft_ "func_71384_a" "()V" -OpenGlHelper_setActiveTexture OpenGlHelper_ "func_77473_a" "(I)V" -Render_renderShadow Render_ "func_76975_c" "(L"+Entity_.name+";DDDFF)V" -RenderBlocks_renderBlockFluids RenderBlocks_ "func_147721_p" "(L"+Block_+";III)Z" -RenderBlocks_renderStdBlockWithCM RenderBlocks_ "func_147736_d" "(L"+Block_+";IIIFFF)Z" -RenderBlocks_renderBlockSandFalling RenderBlocks_ "func_147749_a" "(L"+Block_+";L"+World_+";IIII)V" -RenderBlocks_renderStdBlockWithAO RenderBlocks_ "func_147751_a" "(L"+Block_+";IIIFFF)Z" -RenderBlocks_renderBlockCactusImpl RenderBlocks_ "func_147754_e" "(L"+Block_+";IIIFFF)Z" -RenderBlocks_renderBlockDoor RenderBlocks_ "func_147760_u" "(L"+Block_+";III)Z" -RenderBlocks_renderBlockBed RenderBlocks_ "func_147773_v" "(L"+Block_+";III)Z" -RenderBlocks_renderBlockByRenderType RenderBlocks_ "func_147805_b" "(L"+Block_+";III)Z" -RenderBlocks_renderStdBlockWithAOP RenderBlocks_ "func_147808_b" "(L"+Block_+";IIIFFF)Z" -RenderBlocks_renderPistonExtension RenderBlocks_ "func_147809_c" "(L"+Block_+";IIIZ)Z" -RenderDragon_shouldRenderPass RenderDragon_ "func_77032_a" "(L"+EntityDragon_+";IF)I" -RenderEnderman_shouldRenderPass RenderEnderman_ "func_77032_a" "(L"+EntityEnderman_+";IF)I" -RenderSpider_shouldRenderPass RenderSpider_ "func_77032_a" "(L"+EntitySpider_+";IF)I" -RendererLivingEntity_doRender RendererLivingEntity_ "func_76986_a" "(L"+EntityLivingBase_+";DDDFF)V" -RendererLivingEntity_renderEquippedItems RendererLivingEntity_ "func_77029_c" "(L"+EntityLivingBase_+";F)V" -RendererLivingEntity_getColorMultiplier RendererLivingEntity_ "func_77030_a" "(L"+EntityLivingBase_+";FF)I" -RendererLivingEntity_renderLabel RendererLivingEntity_ "func_96449_a" "(L"+EntityLivingBase_+";DDDLjava/lang/String;FD)V" -RenderGlobal_renderEntities RenderGlobal_ "func_147589_a" "(L"+EntityLivingBase_.name+";L"+ICamera_.name+";F)V" -RenderGlobal_renderSky RenderGlobal_ "func_72714_a" "(F)V" -RenderGlobal_drawBlockDamageTexture RenderGlobal_ "func_72717_a" "(L"+Tessellator_.name+";L"+EntityPlayer_.name+";F)V" -RenderGlobal_renderClouds RenderGlobal_ "func_72718_b" "(F)V" -RenderGlobal_sortAndRender RenderGlobal_ "func_72719_a" "(L"+EntityLivingBase_.name+";ID)I" -RenderGlobal_clipRenderersByFrustum RenderGlobal_ "func_72729_a" "(L"+ICamera_.name+";F)V" -RenderGlobal_drawSelectionBox RenderGlobal_ "func_72731_b" "(L"+EntityPlayer_.name+";L"+MovingObjectPosition_.name+";IF)V" -RenderGlobal_renderAllRenderLists RenderGlobal_ "func_72733_a" "(ID)V" -IResourceManager_getResource IResourceManager_ "func_110536_a" "(L"+ResourceLocation_.name+";)L"+IResource_.name+";" -Stitcher_getCurrentWidth Stitcher_ "func_110935_a" "()I" -Tessellator_sortQuad Tessellator_ "func_147564_a" "(FFF)L"+TesselatorVertexState_.name+";" -Tessellator_setNormal Tessellator_ "func_78375_b" "(FFF)V" -Tessellator_addVertex Tessellator_ "func_78377_a" "(DDD)V" -Tessellator_reset Tessellator_ "func_78379_d" "()V" -Tessellator_draw Tessellator_ "func_78381_a" "()I" -TextureAtlasSprite_loadSprite TextureAtlasSprite_ "func_130100_a" "(L"+IResource_.name+";)V" -TextureAtlasSprite_getFrameTextureData TextureAtlasSprite_ "func_147965_a" "(I)[[I" -TextureAtlasSprite_getIconName TextureAtlasSprite_ "func_94215_i" "()Ljava/lang/String;" -TextureAtlasSprite_updateAnimation TextureAtlasSprite_ "func_94219_l" "()V" -TextureCompass_updateCompass TextureCompass_ "func_94241_a" "(L"+World_.name+";DDDZZ)V" -TextureManager_onResourceManagerReload TextureManager_ "func_110549_a" "(L"+IResourceManager_.name+";)V" -TextureManager_bindTexture TextureManager_ "func_110577_a" "(L"+ResourceLocation_.name+";)V" -TextureMap_loadTextureAtlas TextureMap_ "func_110571_b" "(L"+IResourceManager_.name+";)V" -TextureMap_getIconResLoc TextureMap_ "func_147634_a" "(L"+ResourceLocation_.name+";I)L"+ResourceLocation_.name+";" -TextureMap_updateAnimations TextureMap_ "func_94248_c" "()V" -ITextureObject_loadTexture ITextureObject_ "func_110551_a" "(L"+IResourceManager_.name+";)V" -ITextureObject_getGlTextureId ITextureObject_ "func_110552_b" "()I" -TextureUtil_uploadTexture TextureUtil_ "func_110988_a" "(I[III)V" -TextureUtil_uploadTextureImageAllocate TextureUtil_ "func_110989_a" "(ILjava/awt/image/BufferedImage;ZZ)I" -TextureUtil_allocateTexture TextureUtil_ "func_110991_a" "(III)V" -TextureUtil_allocateTextureMipmapAniso TextureUtil_ "func_147946_a" "(IIIIF)V" -TextureUtil_uploadTexSub TextureUtil_ "func_147955_a" "([[IIIIIZZ)V" -TextureUtil_bindTexture TextureUtil_ "func_94277_a" "(I)V" -WorldClient_getCelestialAngle WorldClient_ "func_72826_c" "(F)F" -WorldClient_getRainStrength WorldClient_ "func_72867_j" "(F)F" -Frustrum_setPosition Frustrum_ ICamera_setPosition.name ICamera_setPosition.desc diff --git a/src/main/resources/META-INF/angelica_at.cfg b/src/main/resources/META-INF/angelica_at.cfg index 6fbbd2d11..8932017b0 100644 --- a/src/main/resources/META-INF/angelica_at.cfg +++ b/src/main/resources/META-INF/angelica_at.cfg @@ -1,8 +1,7 @@ -# Make all Tessellator fields public because using accessors for these would be too much rework right now -public net.minecraft.client.renderer.Tessellator field_78394_d # byteBuffer -public net.minecraft.client.renderer.Tessellator field_147568_c # intBuffer -public net.minecraft.client.renderer.Tessellator field_147566_d # floatBuffer -public net.minecraft.client.renderer.Tessellator field_147567_e # shortBuffer +public net.minecraft.client.renderer.EntityRenderer func_78476_b(FI)V # void renderHand(float, int) + +public net.minecraft.client.renderer.RenderGlobal field_72765_l # worldRenderers + public net.minecraft.client.renderer.Tessellator field_78405_h # rawBuffer public net.minecraft.client.renderer.Tessellator field_78406_i # vertexCount public net.minecraft.client.renderer.Tessellator field_78403_j # textureU @@ -15,13 +14,22 @@ public net.minecraft.client.renderer.Tessellator field_78414_p # hasBrightness public net.minecraft.client.renderer.Tessellator field_78413_q # hasNormals public net.minecraft.client.renderer.Tessellator field_147569_p # rawBufferIndex public net.minecraft.client.renderer.Tessellator field_78411_s # addedVertices -public net.minecraft.client.renderer.Tessellator field_78410_t # isColorDisabled public net.minecraft.client.renderer.Tessellator field_78409_u # drawMode public net.minecraft.client.renderer.Tessellator field_78408_v # xOffset public net.minecraft.client.renderer.Tessellator field_78407_w # yOffset public net.minecraft.client.renderer.Tessellator field_78417_x # zOffset -public net.minecraft.client.renderer.Tessellator field_78416_y # normal public net.minecraft.client.renderer.Tessellator field_78415_z # isDrawing public net.minecraft.client.renderer.Tessellator field_78388_E # bufferSize -public net.minecraft.client.renderer.Tessellator func_78379_d()V # reset -public net.minecraft.client.renderer.EntityRenderer func_78476_b(FI)V # renderHand +public net.minecraft.client.renderer.Tessellator func_78379_d()V # void reset() + +public net.minecraft.client.model.ModelRenderer field_78812_q # compiled +public net.minecraft.client.model.ModelRenderer field_78811_r # displayList + +public net.minecraft.client.renderer.entity.RendererLivingEntity field_77045_g # mainModel +public net.minecraft.client.renderer.entity.RendererLivingEntity field_77046_h # renderPassModel + +public net.minecraft.client.renderer.texture.AbstractTexture field_110553_a # glTextureId + +public net.minecraft.client.renderer.texture.TextureAtlasSprite field_147966_k # useAnisotropicFiltering + +public net.minecraft.client.renderer.texture.TextureMap func_147634_a(Lnet/minecraft/util/ResourceLocation;I)Lnet/minecraft/util/ResourceLocation; # ResourceLocation completeResourceLocation(ResourceLocation, int) diff --git a/todo/shadersmod-mcf.patch b/todo/shadersmod-mcf.patch deleted file mode 100644 index 2e4c08f61..000000000 --- a/todo/shadersmod-mcf.patch +++ /dev/null @@ -1,232 +0,0 @@ -diff U3 net/minecraft/client/model/ModelRenderer.java net/minecraft/client/model/ModelRenderer.java ---- net/minecraft/client/model/ModelRenderer.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/model/ModelRenderer.java Sat Jul 12 03:12:44 2014 -@@ -305,4 +305,18 @@ - this.textureHeight = (float)p_78787_2_; - return this; - } -+ -+ public boolean getCompiled() { -+ return compiled; -+ } -+ public int getDisplayList() { -+ return displayList; -+ } -+ public void resetDisplayList() { -+ if (this.compiled) { -+ GLAllocation.deleteDisplayLists(this.displayList); -+ this.displayList = 0; -+ this.compiled = false; -+ } -+ } - } -\ No newline at end of file -diff U3 net/minecraft/client/renderer/Tessellator.java net/minecraft/client/renderer/Tessellator.java ---- net/minecraft/client/renderer/Tessellator.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/renderer/Tessellator.java Sun Jul 06 21:01:03 2014 -@@ -24,70 +24,76 @@ - public int textureID = 0; - - /** The byte buffer used for GL allocation. */ -- private static ByteBuffer byteBuffer = GLAllocation.createDirectByteBuffer(nativeBufferSize * 4); -+ public /*static*/ ByteBuffer byteBuffer = GLAllocation.createDirectByteBuffer(nativeBufferSize * 4); - /** The same memory as byteBuffer, but referenced as an integer buffer. */ -- private static IntBuffer intBuffer = byteBuffer.asIntBuffer(); -+ public /*static*/ IntBuffer intBuffer = byteBuffer.asIntBuffer(); - /** The same memory as byteBuffer, but referenced as an float buffer. */ -- private static FloatBuffer floatBuffer = byteBuffer.asFloatBuffer(); -+ public /*static*/ FloatBuffer floatBuffer = byteBuffer.asFloatBuffer(); - /** The same memory as byteBuffer, but referenced as an short buffer. */ -- private static ShortBuffer shortBuffer = byteBuffer.asShortBuffer(); -+ public /*static*/ ShortBuffer shortBuffer = byteBuffer.asShortBuffer(); - /** Raw integer array. */ -- private int[] rawBuffer; -+ public int[] rawBuffer; - /** - * The number of vertices to be drawn in the next draw call. Reset to 0 between draw calls. - */ -- private int vertexCount; -+ public int vertexCount; - /** The first coordinate to be used for the texture. */ -- private double textureU; -+ public double textureU; - /** The second coordinate to be used for the texture. */ -- private double textureV; -- private int brightness; -+ public double textureV; -+ public int brightness; - /** The color (RGBA) value to be used for the following draw call. */ -- private int color; -+ public int color; - /** - * Whether the current draw object for this tessellator has color values. - */ -- private boolean hasColor; -+ public boolean hasColor; - /** - * Whether the current draw object for this tessellator has texture coordinates. - */ -- private boolean hasTexture; -- private boolean hasBrightness; -+ public boolean hasTexture; -+ public boolean hasBrightness; - /** - * Whether the current draw object for this tessellator has normal values. - */ -- private boolean hasNormals; -+ public boolean hasNormals; - /** The index into the raw buffer to be used for the next data. */ -- private int rawBufferIndex; -+ public int rawBufferIndex; - /** - * The number of vertices manually added to the given draw call. This differs from vertexCount because it adds extra - * vertices when converting quads to triangles. - */ -- private int addedVertices; -+ public int addedVertices; - /** Disables all color information for the following draw call. */ - private boolean isColorDisabled; - /** The draw mode currently being used by the tessellator. */ -- private int drawMode; -+ public int drawMode; - /** - * An offset to be applied along the x-axis for all vertices in this draw call. - */ -- private double xOffset; -+ public double xOffset; - /** - * An offset to be applied along the y-axis for all vertices in this draw call. - */ -- private double yOffset; -+ public double yOffset; - /** - * An offset to be applied along the z-axis for all vertices in this draw call. - */ -- private double zOffset; -+ public double zOffset; - /** The normal to be applied to the face being drawn. */ - private int normal; - /** The static instance of the Tessellator. */ - public static final Tessellator instance = new Tessellator(2097152); - /** Whether this tessellator is currently in draw mode. */ -- private boolean isDrawing; -+ public boolean isDrawing; - /** The size of the buffers used (in integers). */ -- private int bufferSize; -+ public int bufferSize; -+ public float midTextureU; -+ public float midTextureV; -+ public float normalX; -+ public float normalY; -+ public float normalZ; -+ public float[] vertexPos = new float[16]; - private static final String __OBFID = "CL_00000960"; - - private Tessellator(int p_i1250_1_) -@@ -245,7 +251,7 @@ - /** - * Clears the tessellator state in preparation for new drawing. - */ -- private void reset() -+ public void reset() - { - this.vertexCount = 0; - this.byteBuffer.clear(); -diff U3 net/minecraft/client/renderer/entity/RendererLivingEntity.java net/minecraft/client/renderer/entity/RendererLivingEntity.java ---- net/minecraft/client/renderer/entity/RendererLivingEntity.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/renderer/entity/RendererLivingEntity.java Sun Jul 06 20:40:40 2014 -@@ -31,9 +31,9 @@ - { - private static final Logger logger = LogManager.getLogger(); - private static final ResourceLocation RES_ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png"); -- protected ModelBase mainModel; -+ public ModelBase mainModel; - /** The model to be used during the render passes. */ -- protected ModelBase renderPassModel; -+ public ModelBase renderPassModel; - private static final String __OBFID = "CL_00001012"; - - public static float NAME_TAG_RANGE = 64.0f; -diff U3 net/minecraft/client/renderer/texture/AbstractTexture.java net/minecraft/client/renderer/texture/AbstractTexture.java ---- net/minecraft/client/renderer/texture/AbstractTexture.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/renderer/texture/AbstractTexture.java Sun Jul 06 20:40:40 2014 -@@ -1,12 +1,14 @@ - package net.minecraft.client.renderer.texture; - -+import com.gtnewhorizons.angelica.client.MultiTexID; - import cpw.mods.fml.relauncher.Side; - import cpw.mods.fml.relauncher.SideOnly; - - @SideOnly(Side.CLIENT) - public abstract class AbstractTexture implements ITextureObject - { -- protected int glTextureId = -1; -+ public int glTextureId = -1; -+ public MultiTexID multiTex; - private static final String __OBFID = "CL_00001047"; - - public int getGlTextureId() -@@ -27,4 +29,10 @@ - this.glTextureId = -1; - } - } -+ -+ @Override -+ public MultiTexID getMultiTexID() { -+ // TODO Auto-generated method stub -+ return null; -+ } - } -\ No newline at end of file -diff U3 net/minecraft/client/renderer/texture/ITextureObject.java net/minecraft/client/renderer/texture/ITextureObject.java ---- net/minecraft/client/renderer/texture/ITextureObject.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/renderer/texture/ITextureObject.java Sun Jul 06 20:40:40 2014 -@@ -3,6 +3,8 @@ - import cpw.mods.fml.relauncher.Side; - import cpw.mods.fml.relauncher.SideOnly; - import java.io.IOException; -+ -+import com.gtnewhorizons.angelica.client.MultiTexID; - import net.minecraft.client.resources.IResourceManager; - - @SideOnly(Side.CLIENT) -@@ -11,4 +13,6 @@ - void loadTexture(IResourceManager p_110551_1_) throws IOException; - - int getGlTextureId(); -+ -+ MultiTexID getMultiTexID(); - } -\ No newline at end of file -diff U3 net/minecraft/client/renderer/texture/TextureAtlasSprite.java net/minecraft/client/renderer/texture/TextureAtlasSprite.java ---- net/minecraft/client/renderer/texture/TextureAtlasSprite.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/renderer/texture/TextureAtlasSprite.java Sun Jul 06 20:40:40 2014 -@@ -24,7 +24,7 @@ - protected List framesTextureData = Lists.newArrayList(); - private AnimationMetadataSection animationMetadata; - protected boolean rotated; -- private boolean useAnisotropicFiltering; -+ public boolean useAnisotropicFiltering; - protected int originX; - protected int originY; - protected int width; -diff U3 net/minecraft/client/renderer/texture/TextureMap.java net/minecraft/client/renderer/texture/TextureMap.java ---- net/minecraft/client/renderer/texture/TextureMap.java Sun Jul 06 20:27:14 2014 -+++ net/minecraft/client/renderer/texture/TextureMap.java Sun Jul 06 20:40:40 2014 -@@ -49,6 +49,7 @@ - private int anisotropicFiltering = 1; - private final TextureAtlasSprite missingImage = new TextureAtlasSprite("missingno"); - private static final String __OBFID = "CL_00001058"; -+ public int atlasWidth, atlasHeight; // shadersmod - - public TextureMap(int p_i1281_1_, String p_i1281_2_) - { -@@ -292,7 +293,7 @@ - ForgeHooksClient.onTextureStitchedPost(this); - } - -- private ResourceLocation completeResourceLocation(ResourceLocation p_147634_1_, int p_147634_2_) -+ public ResourceLocation completeResourceLocation(ResourceLocation p_147634_1_, int p_147634_2_) - { - return p_147634_2_ == 0 ? new ResourceLocation(p_147634_1_.getResourceDomain(), String.format("%s/%s%s", new Object[] {this.basePath, p_147634_1_.getResourcePath(), ".png"})): new ResourceLocation(p_147634_1_.getResourceDomain(), String.format("%s/mipmaps/%s.%d%s", new Object[] {this.basePath, p_147634_1_.getResourcePath(), Integer.valueOf(p_147634_2_), ".png"})); - }