mirror of
https://github.com/GTNewHorizons/Angelica.git
synced 2026-10-25 20:22:22 +00:00
Fully port ASM to Mixins (#11)
* Update buildscript * Enable genericInjection * Re-enable remapping for certain mixins * Update buildscript * Small fixes - Add generic types - Add diamond operators - Fix typo in "NormalMap" - Remove redundant assignments - Access static field via class instead of instance - Use List as type instead of ArrayList - Add serialVersionUID * Rename MixinEntityRender -> MixinRender * Rewrite EntityRenderer ASM as Mixins * Replace `@Accessor` mixins in favor of ATs * Move compat to mixins * Logger cleanup * Rewrite ItemRenderer ASM as Mixins * Unify names * Rewrite RendererLivingEntity ASM as Mixins * Use Log4J Logger * Delete ACTRenderManager * Rewrite ACTRenderSpider as Mixins * Rewrite AbstractTexture ASM as Mixins * Port TextureAtlasSprite ASM as Mixins * Rewrite ThreadDownloadImageData ASM as Mixins * Rewrite DynamicTexture ASM as Mixins * Rewrite LayeredTexture ASM as Mixins * Rewrite TextureManager ASM as Mixins * Rewrite ITextureObject ASM as mixins * Rewrite ITextureObject ASM as Mixins * Clean up compileStubs * Delete unused stuff * Finishing touches
This commit is contained in:
1 parent
2329be3d2d
commit
fa8be308de
88 files changed
+1563
-3904
No files matched your search
+141
-62
@@ -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'
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
BIN
Binary file not shown.
+4
-4
@@ -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<Type>, Map<K, V> 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";
|
||||
|
||||
Vendored
BIN
Binary file not shown.
+1
-1
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
package net.minecraft.client.model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ModelBase {
|
||||
|
||||
public List boxList;
|
||||
}
|
||||
@@ -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) {}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package net.minecraft.client.renderer.culling;
|
||||
|
||||
public class Frustrum implements ICamera {
|
||||
|
||||
public void setPosition(double x, double y, double z) {}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package net.minecraft.client.renderer.culling;
|
||||
|
||||
public interface ICamera {
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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() {}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import com.gtnewhorizons.angelica.client.MultiTexID;
|
||||
|
||||
public interface ITextureObject {
|
||||
|
||||
MultiTexID getMultiTexID();
|
||||
MultiTexID angelica$getMultiTexID();
|
||||
|
||||
int getGlTextureId();
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package net.minecraft.client.renderer.texture;
|
||||
|
||||
public class TextureAtlasSprite {
|
||||
|
||||
public boolean useAnisotropicFiltering;
|
||||
|
||||
public void updateAnimation() {}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package net.minecraft.client.resources;
|
||||
|
||||
public interface IResourceManager {
|
||||
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package net.minecraft.client.shader;
|
||||
|
||||
public class TesselatorVertexState {
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
package net.minecraft.util;
|
||||
|
||||
public class ResourceLocation {
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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<GuiButton> 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) {}
|
||||
|
||||
@@ -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<String> shaderslist;
|
||||
|
||||
final GuiShaders shadersGui;
|
||||
|
||||
|
||||
@@ -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<String> list = new ArrayList();
|
||||
static List<String> listofShaders() {
|
||||
List<String> 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<String, IntBuffer> drawBuffersMap = new HashMap();
|
||||
Map<String, IntBuffer> 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<Render> 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<ModelRenderer> 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);
|
||||
}
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<Integer, MultiTexID> multiTexMap = new HashMap();
|
||||
public static Map<Integer, MultiTexID> 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<TextureAtlasSprite> tasList) {
|
||||
Iterator<TextureAtlasSprite> 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<String> 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(
|
||||
|
||||
@@ -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<String> getMixins(Set<String> loadedMods) {
|
||||
final List<String> mixins = new ArrayList<>();
|
||||
final List<String> 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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<IClassTransformer> xformers = (List<IClassTransformer>) 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);
|
||||
}
|
||||
|
||||
@@ -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<String> mixinClasses = new ArrayList<>();
|
||||
private Supplier<Boolean> applyIf;
|
||||
private Supplier<Boolean> applyIf = () -> true;
|
||||
private Side side = Side.BOTH;
|
||||
private Phase phase = Phase.LATE;
|
||||
private final List<TargetedMod> targetedMods = new ArrayList<>();
|
||||
|
||||
@@ -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;
|
||||
|
||||
-23
@@ -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);
|
||||
|
||||
}
|
||||
-17
@@ -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();
|
||||
}
|
||||
-14
@@ -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();
|
||||
}
|
||||
+29
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+44
@@ -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 = "<init>(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 = "<init>(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);
|
||||
}
|
||||
|
||||
}
|
||||
+364
-13
@@ -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<FloatBuffer> cir) {
|
||||
Shaders.setFogColor(red, green, blue);
|
||||
}
|
||||
}
|
||||
+14
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+32
@@ -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<String> 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);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+2
-2
@@ -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();
|
||||
}
|
||||
}
|
||||
+6
-8
@@ -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<Boolean> cir) {
|
||||
private void angelica$pushEntityBlock(Block block, int x, int y, int z, CallbackInfoReturnable<Boolean> 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<Boolean> cir) {
|
||||
private void angelica$popEntityBlock(Block block, int x, int y, int z, CallbackInfoReturnable<Boolean> 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<Boolean> 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<Boolean> 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<Block> original) {
|
||||
private Block angelica$pushEntityFlowerInFlowerPot(Item itemIn, Operation<Block> 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<Boolean> cir) {
|
||||
Shaders.popEntity();
|
||||
}
|
||||
|
||||
@@ -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<Integer> cir) {
|
||||
Shaders.beginSpiderEyes();
|
||||
}
|
||||
|
||||
}
|
||||
+26
@@ -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<Integer> cir) {
|
||||
Shaders.beginSpiderEyes();
|
||||
}
|
||||
|
||||
}
|
||||
+10
-9
@@ -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<Void> 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<Void> 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",
|
||||
|
||||
@@ -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<Integer> cir) {
|
||||
Shaders.beginSpiderEyes();
|
||||
}
|
||||
|
||||
}
|
||||
+85
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
+6
-5
@@ -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,
|
||||
|
||||
+21
-20
@@ -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<Integer> 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;
|
||||
}
|
||||
}
|
||||
+31
@@ -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_);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-3
@@ -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);
|
||||
}
|
||||
|
||||
+2
-3
@@ -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);
|
||||
}
|
||||
|
||||
+41
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+28
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
+1
-2
@@ -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
|
||||
|
||||
@@ -2,5 +2,5 @@ package com.gtnewhorizons.angelica.mixins.interfaces;
|
||||
|
||||
public interface IModelRenderer {
|
||||
|
||||
void resetDisplayList();
|
||||
void angelica$resetDisplayList();
|
||||
}
|
||||
+20
-20
@@ -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);
|
||||
}
|
||||
+20
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<AbstractInsnNode> it = mn.instructions.iterator();
|
||||
// while (it.hasNext())
|
||||
// {
|
||||
// AbstractInsnNode node = it.next();
|
||||
// System.out.println(node.toString());
|
||||
// }
|
||||
// // send to target
|
||||
// mn.accept(mv);
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
-81
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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("<init>") && 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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, "<init>", "(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<String, IClassTransformer> 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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -8,9 +8,9 @@ import com.gtnewhorizons.angelica.transform.Names.Meth;
|
||||
|
||||
public class Namer {
|
||||
|
||||
ArrayList<Clas> ac = new ArrayList();
|
||||
ArrayList<Fiel> af = new ArrayList();
|
||||
ArrayList<Meth> am = new ArrayList();
|
||||
ArrayList<Clas> ac = new ArrayList<>();
|
||||
ArrayList<Fiel> af = new ArrayList<>();
|
||||
ArrayList<Meth> am = new ArrayList<>();
|
||||
|
||||
Clas c(String name) {
|
||||
Clas x = new Clas(name);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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<String, String> loadNameMapCSV(String fileName) {
|
||||
Map<String, String> 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<String, String> loadReobfMap(String fileName) {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
BufferedReader rd = null;
|
||||
try {
|
||||
rd = new BufferedReader(new FileReader(fileName));
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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"}));
|
||||
}
|
||||
Reference in new issue
Block a user