Make it build (#1)

* Adapt to examplemod1.7.10 structure

* Fix broken static imports

* apply spotless

* Update mcmod.info

* Start work on ATs

* More ATs

* Compile stubs

* Recursive compilation stubs to fix missing items in stubs

* Stub out the tesselator

* Switch to IFMLLoadingPlugin

* Move the namer classes out of todo

* Yeet ATs

* Change transformers paths

* spotless, remove MANIFEST.MF as it is no longer needed

* Use MCF namer

* Revert "spotless, remove MANIFEST.MF as it is no longer needed"

This reverts commit 9be1abfe70.

* Revert "Switch to IFMLLoadingPlugin"

This reverts commit 089a01e148.

* At least make it work for now

* Dirty implementation of include preprocessing

* spotlessApply (#6)

Co-authored-by: GitHub GTNH Actions <>

Co-authored-by: Vladislav Laetansky <vlaetansky@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
authored and GitHub committed 2022-08-23 15:34:08 +01:00
1 parent dccbbdd63d
commit b5f36332ad
151 files changed
+13774 -12502

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
# This is the universal Text Editor Configuration
# for all GTNewHorizons projects
# See: https://editorconfig.org/
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.{bat,ini}]
end_of_line = crlf
[*.{dtd,json,info,mcmeta,md,sh,svg,xml,xsd,xsl,yaml,yml}]
indent_size = 2
[*.lang]
trim_trailing_whitespace = false
+35
View File
@@ -0,0 +1,35 @@
* text eol=lf
*.jar binary
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.tif binary
*.tiff binary
*.ico binary
*.svg text
*.eps binary
*.kar binary
*.m4a binary
*.mid binary
*.midi binary
*.mp3 binary
*.ogg binary
*.ra binary
*.7z binary
*.gz binary
*.tar binary
*.tgz binary
*.zip binary
*.patch -text
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf
*autogenerated binary
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
if ! git diff --name-only HEAD HEAD~1 | grep -qF 'build.gradle'; then
new_version="$(date +%s)"
sed --in-place "s!^//version:.*!//version: $new_version!g" build.gradle
git add build.gradle
git commit -m "[ci skip] update build script version to $new_version"
git push
printf 'Updated buildscript version to %s\n' "$new_version"
else
printf 'Ignored buildscript version update: no changes detected\n'
fi
+13
View File
@@ -0,0 +1,13 @@
name: Build and test
on:
pull_request:
branches: [ master, main ]
push:
branches: [ master, main ]
jobs:
build-and-test:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/build-and-test.yml@master
secrets: inherit
+14
View File
@@ -0,0 +1,14 @@
name: Release tagged build
on:
push:
tags: [ '*' ]
permissions:
contents: write
jobs:
release-tags:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/release-tags.yml@master
secrets: inherit
+32
View File
@@ -0,0 +1,32 @@
.gradle
.settings
/.idea/
/.vscode/
/run/
/build/
/eclipse/
.classpath
.project
/bin/
/config/
/crash-reports/
/logs/
options.txt
/saves/
usernamecache.json
banned-ips.json
banned-players.json
eula.txt
ops.json
server.properties
servers.dat
usercache.json
whitelist.json
/out/
*.iml
*.ipr
*.iws
src/main/resources/mixins.*.json
*.bat
*.DS_Store
!gradlew.bat
+3
View File
@@ -0,0 +1,3 @@
# Any Github changes require admin approval
/.github/** @GTNewHorizons/admin
View File
File renamed without changes.
+21
View File
@@ -0,0 +1,21 @@
configurations {
compileStubs
}
sourceSets {
compileStubsStubs
compileStubs {
compileClasspath += configurations.compileStubs
}
}
jar {
manifest {
attributes([
"Manifest-Version" : 1.0,
"TweakClass" : "com.gtnewhorizons.angelica.loading.SMCTweaker",
"TweakOrder" : 1100,
])
}
}
+968
View File
@@ -0,0 +1,968 @@
//version: 1661114848
/*
DO NOT CHANGE THIS FILE!
Also, you may replace this file at any time if there is an update available.
Please check https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/build.gradle for updates.
*/
import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.gradle.internal.logging.text.StyledTextOutput.Style
import org.gradle.internal.logging.text.StyledTextOutputFactory
import java.nio.file.Files
import java.nio.file.Paths
import java.util.concurrent.TimeUnit
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
import java.util.zip.ZipOutputStream
buildscript {
repositories {
mavenCentral()
maven {
name 'forge'
url 'https://maven.minecraftforge.net'
}
maven {
// GTNH ForgeGradle Fork
name = "GTNH Maven"
url = "http://jenkins.usrv.eu:8081/nexus/content/groups/public/"
}
maven {
name 'sonatype'
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
maven {
name 'Scala CI dependencies'
url 'https://repo1.maven.org/maven2/'
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2.9'
}
}
plugins {
id 'java-library'
id 'idea'
id 'eclipse'
id 'scala'
id 'maven-publish'
id 'org.jetbrains.kotlin.jvm' version '1.5.30' apply false
id 'org.jetbrains.kotlin.kapt' version '1.5.30' apply false
id 'com.google.devtools.ksp' version '1.5.30-1.0.0' apply false
id 'org.ajoberstar.grgit' version '4.1.1'
id 'com.github.johnrengelman.shadow' version '4.0.4'
id 'com.palantir.git-version' version '0.13.0' apply false
id 'de.undercouch.download' version '5.0.1'
id 'com.github.gmazzo.buildconfig' version '3.0.3' apply false
id 'com.diffplug.spotless' version '6.7.2' apply false
}
boolean settingsupdated = verifySettingsGradle()
settingsupdated = verifyGitAttributes() || settingsupdated
if (settingsupdated)
throw new GradleException("Settings has been updated, please re-run task.")
dependencies {
implementation 'com.diffplug:blowdryer:1.6.0'
}
apply plugin: 'com.diffplug.blowdryer'
if (project.file('.git/HEAD').isFile()) {
apply plugin: 'com.palantir.git-version'
}
def out = services.get(StyledTextOutputFactory).create('an-output')
apply plugin: 'forge'
def projectJavaVersion = JavaLanguageVersion.of(8)
java {
toolchain {
languageVersion.set(projectJavaVersion)
}
}
idea {
module {
inheritOutputDirs = true
downloadJavadoc = true
downloadSources = true
}
}
boolean disableSpotless = project.hasProperty("disableSpotless") ? project.disableSpotless.toBoolean() : false
if (!disableSpotless) {
apply plugin: 'com.diffplug.spotless'
apply from: Blowdryer.file('spotless.gradle')
}
if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
throw new GradleException("This project requires Java 8, but it's running on " + JavaVersion.current())
}
checkPropertyExists("modName")
checkPropertyExists("modId")
checkPropertyExists("modGroup")
checkPropertyExists("autoUpdateBuildScript")
checkPropertyExists("minecraftVersion")
checkPropertyExists("forgeVersion")
checkPropertyExists("replaceGradleTokenInFile")
checkPropertyExists("gradleTokenModId")
checkPropertyExists("gradleTokenModName")
checkPropertyExists("gradleTokenVersion")
checkPropertyExists("gradleTokenGroupName")
checkPropertyExists("apiPackage")
checkPropertyExists("accessTransformersFile")
checkPropertyExists("usesMixins")
checkPropertyExists("mixinPlugin")
checkPropertyExists("mixinsPackage")
checkPropertyExists("coreModClass")
checkPropertyExists("containsMixinsAndOrCoreModOnly")
checkPropertyExists("usesShadowedDependencies")
checkPropertyExists("developmentEnvironmentUserName")
boolean noPublishedSources = project.hasProperty("noPublishedSources") ? project.noPublishedSources.toBoolean() : false
boolean usesMixinDebug = project.hasProperty('usesMixinDebug') ?: project.usesMixins.toBoolean()
boolean forceEnableMixins = project.hasProperty('forceEnableMixins') ? project.forceEnableMixins.toBoolean() : false
String channel = project.hasProperty('channel') ? project.channel : 'stable'
String mappingsVersion = project.hasProperty('mappingsVersion') ? project.mappingsVersion : '12'
String javaSourceDir = "src/main/java/"
String scalaSourceDir = "src/main/scala/"
String kotlinSourceDir = "src/main/kotlin/"
String targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/")
String targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/")
String targetPackageKotlin = kotlinSourceDir + modGroup.toString().replaceAll("\\.", "/")
if (!(getFile(targetPackageJava).exists() || getFile(targetPackageScala).exists() || getFile(targetPackageKotlin).exists())) {
throw new GradleException("Could not resolve \"modGroup\"! Could not find " + targetPackageJava + " or " + targetPackageScala + " or " + targetPackageKotlin)
}
if (apiPackage) {
targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/")
targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/")
targetPackageKotlin = kotlinSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/")
if (!(getFile(targetPackageJava).exists() || getFile(targetPackageScala).exists() || getFile(targetPackageKotlin).exists())) {
throw new GradleException("Could not resolve \"apiPackage\"! Could not find " + targetPackageJava + " or " + targetPackageScala + " or " + targetPackageKotlin)
}
}
if (accessTransformersFile) {
String targetFile = "src/main/resources/META-INF/" + accessTransformersFile
if (!getFile(targetFile).exists()) {
throw new GradleException("Could not resolve \"accessTransformersFile\"! Could not find " + targetFile)
}
}
if (usesMixins.toBoolean()) {
if (mixinsPackage.isEmpty() || mixinPlugin.isEmpty()) {
throw new GradleException("\"mixinPlugin\" requires \"mixinsPackage\" and \"mixinPlugin\" to be set!")
}
targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/")
targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/")
targetPackageKotlin = kotlinSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/")
if (!(getFile(targetPackageJava).exists() || getFile(targetPackageScala).exists() || getFile(targetPackageKotlin).exists())) {
throw new GradleException("Could not resolve \"mixinsPackage\"! Could not find " + targetPackageJava + " or " + targetPackageScala + " or " + targetPackageKotlin)
}
String targetFileJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".java"
String targetFileScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".scala"
String targetFileScalaJava = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".java"
String targetFileKotlin = kotlinSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".kt"
if (!(getFile(targetFileJava).exists() || getFile(targetFileScala).exists() || getFile(targetFileScalaJava).exists() || getFile(targetFileKotlin).exists())) {
throw new GradleException("Could not resolve \"mixinPlugin\"! Could not find " + targetFileJava + " or " + targetFileScala + " or " + targetFileScalaJava + " or " + targetFileKotlin)
}
}
if (coreModClass) {
String targetFileJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".java"
String targetFileScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".scala"
String targetFileScalaJava = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".java"
String targetFileKotlin = kotlinSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".kt"
if (!(getFile(targetFileJava).exists() || getFile(targetFileScala).exists() || getFile(targetFileScalaJava).exists() || getFile(targetFileKotlin).exists())) {
throw new GradleException("Could not resolve \"coreModClass\"! Could not find " + targetFileJava + " or " + targetFileScala + " or " + targetFileScalaJava + " or " + targetFileKotlin)
}
}
configurations.all {
resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS)
// Make sure GregTech build won't time out
System.setProperty("org.gradle.internal.http.connectionTimeout", 120000 as String)
System.setProperty("org.gradle.internal.http.socketTimeout", 120000 as String)
}
// Fix Jenkins' Git: chmod a file should not be detected as a change and append a '.dirty' to the version
try {
'git config core.fileMode false'.execute()
}
catch (Exception ignored) {
out.style(Style.Failure).println("git isn't installed at all")
}
// Pulls version first from the VERSION env and then git tag
String identifiedVersion
String versionOverride = System.getenv("VERSION") ?: null
try {
identifiedVersion = versionOverride == null ? gitVersion() : versionOverride
}
catch (Exception ignored) {
out.style(Style.Failure).text(
'This mod must be version controlled by Git AND the repository must provide at least one tag,\n' +
'or the VERSION override must be set! ').style(Style.SuccessHeader).text('(Do NOT download from GitHub using the ZIP option, instead\n' +
'clone the repository, see ').style(Style.Info).text('https://gtnh.miraheze.org/wiki/Development').style(Style.SuccessHeader).println(' for details.)'
)
versionOverride = 'NO-GIT-TAG-SET'
identifiedVersion = versionOverride
}
version = minecraftVersion + '-' + identifiedVersion
ext {
modVersion = identifiedVersion
}
if (identifiedVersion == versionOverride) {
out.style(Style.Failure).text('Override version to ').style(Style.Identifier).text(modVersion).style(Style.Failure).println('!\7')
}
group = modGroup
if (project.hasProperty("customArchiveBaseName") && customArchiveBaseName) {
archivesBaseName = customArchiveBaseName
} else {
archivesBaseName = modId
}
def arguments = []
def jvmArguments = []
if (usesMixins.toBoolean() || forceEnableMixins) {
arguments += [
"--tweakClass org.spongepowered.asm.launch.MixinTweaker"
]
if (usesMixinDebug.toBoolean()) {
jvmArguments += [
"-Dmixin.debug.countInjections=true",
"-Dmixin.debug.verbose=true",
"-Dmixin.debug.export=true"
]
}
}
minecraft {
version = minecraftVersion + '-' + forgeVersion + '-' + minecraftVersion
runDir = 'run'
if (replaceGradleTokenInFile) {
replaceIn replaceGradleTokenInFile
if (gradleTokenModId) {
replace gradleTokenModId, modId
}
if (gradleTokenModName) {
replace gradleTokenModName, modName
}
if (gradleTokenVersion) {
replace gradleTokenVersion, modVersion
}
if (gradleTokenGroupName) {
replace gradleTokenGroupName, modGroup
}
}
clientIntellijRun {
args(arguments)
jvmArgs(jvmArguments)
if (developmentEnvironmentUserName) {
args("--username", developmentEnvironmentUserName)
}
}
serverIntellijRun {
args(arguments)
jvmArgs(jvmArguments)
}
}
if (file('addon.gradle').exists()) {
apply from: 'addon.gradle'
}
apply from: 'repositories.gradle'
configurations {
implementation.extendsFrom(shadowImplementation) // TODO: remove after all uses are refactored
implementation.extendsFrom(shadowCompile)
implementation.extendsFrom(shadeCompile)
}
repositories {
maven {
name 'Overmind forge repo mirror'
url 'https://gregtech.overminddl1.com/'
}
if (usesMixins.toBoolean() || forceEnableMixins) {
maven {
name 'sponge'
url 'https://repo.spongepowered.org/repository/maven-public'
}
maven {
url 'https://jitpack.io'
}
}
}
dependencies {
if (usesMixins.toBoolean()) {
annotationProcessor('org.ow2.asm:asm-debug-all:5.0.3')
annotationProcessor('com.google.guava:guava:24.1.1-jre')
annotationProcessor('com.google.code.gson:gson:2.8.6')
annotationProcessor('org.spongepowered:mixin:0.8-SNAPSHOT')
}
if (usesMixins.toBoolean() || forceEnableMixins) {
// using 0.8 to workaround a issue in 0.7 which fails mixin application
compile('com.github.GTNewHorizons:SpongePoweredMixin:0.7.12-GTNH') {
// Mixin includes a lot of dependencies that are too up-to-date
exclude module: 'launchwrapper'
exclude module: 'guava'
exclude module: 'gson'
exclude module: 'commons-io'
exclude module: 'log4j-core'
}
compile('com.github.GTNewHorizons:SpongeMixins:1.5.0')
}
}
apply from: 'dependencies.gradle'
def mixingConfigRefMap = 'mixins.' + modId + '.refmap.json'
def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + mixingConfigRefMap
def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg"
task generateAssets {
if (usesMixins.toBoolean()) {
def mixinConfigFile = getFile("/src/main/resources/mixins." + modId + ".json");
if (!mixinConfigFile.exists()) {
mixinConfigFile.text = """{
"required": true,
"minVersion": "0.7.11",
"package": "${modGroup}.${mixinsPackage}",
"plugin": "${modGroup}.${mixinPlugin}",
"refmap": "${mixingConfigRefMap}",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8",
"mixins": [],
"client": [],
"server": []
}
"""
}
}
}
task relocateShadowJar(type: ConfigureShadowRelocation) {
target = tasks.shadowJar
prefix = modGroup + ".shadow"
}
shadowJar {
project.configurations.shadeCompile.each { dep ->
from(project.zipTree(dep)) {
exclude 'META-INF', 'META-INF/**'
}
}
manifest {
attributes(getManifestAttributes())
}
minimize() // This will only allow shading for actually used classes
configurations = [
project.configurations.shadowImplementation,
project.configurations.shadowCompile
]
dependsOn(relocateShadowJar)
}
jar {
project.configurations.shadeCompile.each { dep ->
from(project.zipTree(dep)) {
exclude 'META-INF', 'META-INF/**'
}
}
manifest {
attributes(getManifestAttributes())
}
if (usesShadowedDependencies.toBoolean()) {
dependsOn(shadowJar)
enabled = false
}
}
reobf {
if (usesMixins.toBoolean()) {
addExtraSrgFile mixinSrg
}
}
afterEvaluate {
if (usesMixins.toBoolean()) {
tasks.compileJava {
options.compilerArgs += [
"-AreobfSrgFile=${tasks.reobf.srg}",
"-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"
]
}
}
}
runClient {
if (developmentEnvironmentUserName) {
arguments += [
"--username",
developmentEnvironmentUserName
]
}
args(arguments)
jvmArgs(jvmArguments)
}
runServer {
args(arguments)
jvmArgs(jvmArguments)
}
tasks.withType(JavaExec).configureEach {
javaLauncher.set(
javaToolchains.launcherFor {
languageVersion = projectJavaVersion
}
)
}
processResources {
// this will ensure that this task is redone when the versions change.
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
exclude("spotless.gradle")
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
// replace modVersion and minecraftVersion
expand "minecraftVersion": project.minecraft.version,
"modVersion": modVersion,
"modId": modId,
"modName": modName
}
if (usesMixins.toBoolean()) {
from refMap
}
// copy everything else that's not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
exclude 'spotless.gradle'
}
}
def getManifestAttributes() {
def manifestAttributes = [:]
if (!containsMixinsAndOrCoreModOnly.toBoolean() && (usesMixins.toBoolean() || coreModClass)) {
manifestAttributes += ["FMLCorePluginContainsFMLMod": true]
}
if (accessTransformersFile) {
manifestAttributes += ["FMLAT": accessTransformersFile.toString()]
}
if (coreModClass) {
manifestAttributes += ["FMLCorePlugin": modGroup + "." + coreModClass]
}
if (usesMixins.toBoolean()) {
manifestAttributes += [
"TweakClass" : "org.spongepowered.asm.launch.MixinTweaker",
"MixinConfigs" : "mixins." + modId + ".json",
"ForceLoadAsMod": !containsMixinsAndOrCoreModOnly.toBoolean()
]
}
return manifestAttributes
}
task sourcesJar(type: Jar) {
from(sourceSets.main.allSource)
from(file("$projectDir/LICENSE"))
getArchiveClassifier().set('sources')
}
task shadowDevJar(type: ShadowJar) {
project.configurations.shadeCompile.each { dep ->
from(project.zipTree(dep)) {
exclude 'META-INF', 'META-INF/**'
}
}
from sourceSets.main.output
getArchiveClassifier().set("dev")
manifest {
attributes(getManifestAttributes())
}
minimize() // This will only allow shading for actually used classes
configurations = [
project.configurations.shadowImplementation,
project.configurations.shadowCompile
]
}
task relocateShadowDevJar(type: ConfigureShadowRelocation) {
target = tasks.shadowDevJar
prefix = modGroup + ".shadow"
}
task circularResolverJar(type: Jar) {
dependsOn(relocateShadowDevJar)
dependsOn(shadowDevJar)
enabled = false
}
task devJar(type: Jar) {
project.configurations.shadeCompile.each { dep ->
from(project.zipTree(dep)) {
exclude 'META-INF', 'META-INF/**'
}
}
from sourceSets.main.output
getArchiveClassifier().set("dev")
manifest {
attributes(getManifestAttributes())
}
if (usesShadowedDependencies.toBoolean()) {
dependsOn(circularResolverJar)
enabled = false
}
}
task apiJar(type: Jar) {
from(sourceSets.main.allSource) {
include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + '/**'
}
from(sourceSets.main.output) {
include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + '/**'
}
from(sourceSets.main.resources.srcDirs) {
include("LICENSE")
}
getArchiveClassifier().set('api')
}
artifacts {
if (!noPublishedSources) {
archives sourcesJar
}
archives devJar
if (apiPackage) {
archives apiJar
}
}
// The gradle metadata includes all of the additional deps that we disabled from POM generation (including forgeBin with no groupID),
// and isn't strictly needed with the POM so just disable it.
tasks.withType(GenerateModuleMetadata) {
enabled = false
}
// workaround variable hiding in pom processing
def projectConfigs = project.configurations
publishing {
publications {
maven(MavenPublication) {
from components.java
if (usesShadowedDependencies.toBoolean()) {
artifact source: shadowJar, classifier: ""
}
if (!noPublishedSources) {
artifact source: sourcesJar, classifier: "sources"
}
artifact source: usesShadowedDependencies.toBoolean() ? shadowDevJar : devJar, classifier: "dev"
if (apiPackage) {
artifact source: apiJar, classifier: "api"
}
groupId = System.getenv("ARTIFACT_GROUP_ID") ?: "com.github.GTNewHorizons"
artifactId = System.getenv("ARTIFACT_ID") ?: project.name
// Using the identified version, not project.version as it has the prepended 1.7.10
version = System.getenv("RELEASE_VERSION") ?: identifiedVersion
// remove extra garbage from minecraft and minecraftDeps configuration
pom.withXml {
def badArtifacts = [:].withDefault { [] as Set<String> }
for (configuration in [
projectConfigs.minecraft,
projectConfigs.minecraftDeps
]) {
for (dependency in configuration.allDependencies) {
badArtifacts[dependency.group == null ? "" : dependency.group] += dependency.name
}
}
// example for specifying extra stuff to ignore
// badArtifacts["org.example.group"] += "artifactName"
Node pomNode = asNode()
pomNode.dependencies.'*'.findAll() {
badArtifacts[it.groupId.text()].contains(it.artifactId.text())
}.each() {
it.parent().remove(it)
}
}
}
}
repositories {
maven {
url = "http://jenkins.usrv.eu:8081/nexus/content/repositories/releases"
credentials {
username = System.getenv("MAVEN_USER") ?: "NONE"
password = System.getenv("MAVEN_PASSWORD") ?: "NONE"
}
}
}
}
// Updating
task updateBuildScript {
doLast {
if (performBuildScriptUpdate(projectDir.toString())) return
print("Build script already up-to-date!")
}
}
if (!project.getGradle().startParameter.isOffline() && isNewBuildScriptVersionAvailable(projectDir.toString())) {
if (autoUpdateBuildScript.toBoolean()) {
performBuildScriptUpdate(projectDir.toString())
} else {
out.style(Style.SuccessHeader).println("Build script update available! Run 'gradle updateBuildScript'")
}
}
static URL availableBuildScriptUrl() {
new URL("https://raw.githubusercontent.com/GTNewHorizons/ExampleMod1.7.10/master/build.gradle")
}
static URL exampleSettingsGradleUrl() {
new URL("https://raw.githubusercontent.com/GTNewHorizons/ExampleMod1.7.10/master/settings.gradle.example")
}
static URL exampleGitAttributesUrl() {
new URL("https://raw.githubusercontent.com/GTNewHorizons/ExampleMod1.7.10/master/.gitattributes")
}
boolean verifyGitAttributes() {
def gitattributesFile = getFile(".gitattributes")
if (!gitattributesFile.exists()) {
println("Downloading default .gitattributes")
exampleGitAttributesUrl().withInputStream { i -> gitattributesFile.withOutputStream { it << i } }
exec {
workingDir '.'
commandLine 'git', 'add', '--renormalize', '.'
}
return true
}
return false
}
boolean verifySettingsGradle() {
def settingsFile = getFile("settings.gradle")
if (!settingsFile.exists()) {
println("Downloading default settings.gradle")
exampleSettingsGradleUrl().withInputStream { i -> settingsFile.withOutputStream { it << i } }
return true
}
return false
}
boolean performBuildScriptUpdate(String projectDir) {
if (isNewBuildScriptVersionAvailable(projectDir)) {
def buildscriptFile = getFile("build.gradle")
availableBuildScriptUrl().withInputStream { i -> buildscriptFile.withOutputStream { it << i } }
out.style(Style.Success).print("Build script updated. Please REIMPORT the project or RESTART your IDE!")
boolean settingsupdated = verifySettingsGradle()
settingsupdated = verifyGitAttributes() || settingsupdated
if (settingsupdated)
throw new GradleException("Settings has been updated, please re-run task.")
return true
}
return false
}
boolean isNewBuildScriptVersionAvailable(String projectDir) {
Map parameters = ["connectTimeout": 2000, "readTimeout": 2000]
String currentBuildScript = getFile("build.gradle").getText()
String currentBuildScriptHash = getVersionHash(currentBuildScript)
String availableBuildScript = availableBuildScriptUrl().newInputStream(parameters).getText()
String availableBuildScriptHash = getVersionHash(availableBuildScript)
boolean isUpToDate = currentBuildScriptHash.empty || availableBuildScriptHash.empty || currentBuildScriptHash == availableBuildScriptHash
return !isUpToDate
}
static String getVersionHash(String buildScriptContent) {
String versionLine = buildScriptContent.find("^//version: [a-z0-9]*")
if (versionLine != null) {
return versionLine.split(": ").last()
}
return ""
}
configure(updateBuildScript) {
group = 'forgegradle'
description = 'Updates the build script to the latest version'
}
// Parameter Deobfuscation
task deobfParams {
doLast {
String mcpDir = "$project.gradle.gradleUserHomeDir/caches/minecraft/de/oceanlabs/mcp/mcp_$channel/$mappingsVersion"
String mcpZIP = "$mcpDir/mcp_$channel-$mappingsVersion-${minecraftVersion}.zip"
String paramsCSV = "$mcpDir/params.csv"
download.run {
src "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_$channel/$mappingsVersion-$minecraftVersion/mcp_$channel-$mappingsVersion-${minecraftVersion}.zip"
dest mcpZIP
overwrite false
}
if (!file(paramsCSV).exists()) {
println("Extracting MCP archive ...")
unzip(mcpZIP, mcpDir)
}
println("Parsing params.csv ...")
Map<String, String> params = new HashMap<>()
Files.lines(Paths.get(paramsCSV)).forEach { line ->
String[] cells = line.split(",")
if (cells.length > 2 && cells[0].matches("p_i?\\d+_\\d+_")) {
params.put(cells[0], cells[1])
}
}
out.style(Style.Success).println("Modified ${replaceParams(file("$projectDir/src/main/java"), params)} files!")
out.style(Style.Failure).println("Don't forget to verify that the code still works as before!\n It could be broken due to duplicate variables existing now\n or parameters taking priority over other variables.")
}
}
static int replaceParams(File file, Map<String, String> params) {
int fileCount = 0
if (file.isDirectory()) {
for (File f : file.listFiles()) {
fileCount += replaceParams(f, params)
}
return fileCount
}
println("Visiting ${file.getName()} ...")
try {
String content = new String(Files.readAllBytes(file.toPath()))
int hash = content.hashCode()
params.forEach { key, value ->
content = content.replaceAll(key, value)
}
if (hash != content.hashCode()) {
Files.write(file.toPath(), content.getBytes("UTF-8"))
return 1
}
} catch (Exception e) {
e.printStackTrace()
}
return 0
}
// Credit: bitsnaps (https://gist.github.com/bitsnaps/00947f2dce66f4bbdabc67d7e7b33681)
static unzip(String zipFileName, String outputDir) {
byte[] buffer = new byte[16384]
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFileName))
ZipEntry zipEntry = zis.getNextEntry()
while (zipEntry != null) {
File newFile = new File(outputDir + File.separator, zipEntry.name)
if (zipEntry.isDirectory()) {
if (!newFile.isDirectory() && !newFile.mkdirs()) {
throw new IOException("Failed to create directory $newFile")
}
} else {
// fix for Windows-created archives
File parent = newFile.parentFile
if (!parent.isDirectory() && !parent.mkdirs()) {
throw new IOException("Failed to create directory $parent")
}
// write file content
FileOutputStream fos = new FileOutputStream(newFile)
int len = 0
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len)
}
fos.close()
}
zipEntry = zis.getNextEntry()
}
zis.closeEntry()
zis.close()
}
configure(deobfParams) {
group = 'forgegradle'
description = 'Rename all obfuscated parameter names inherited from Minecraft classes'
}
// Dependency Deobfuscation
def deobf(String sourceURL) {
try {
URL url = new URL(sourceURL)
String fileName = url.getFile()
//get rid of directories:
int lastSlash = fileName.lastIndexOf("/")
if (lastSlash > 0) {
fileName = fileName.substring(lastSlash + 1)
}
//get rid of extension:
if (fileName.endsWith(".jar") || fileName.endsWith(".litemod")) {
fileName = fileName.substring(0, fileName.lastIndexOf("."))
}
String hostName = url.getHost()
if (hostName.startsWith("www.")) {
hostName = hostName.substring(4)
}
List parts = Arrays.asList(hostName.split("\\."))
Collections.reverse(parts)
hostName = String.join(".", parts)
return deobf(sourceURL, "$hostName/$fileName")
} catch (Exception e) {
return deobf(sourceURL, "deobf/${sourceURL.hashCode()}")
}
}
// The method above is to be preferred. Use this method if the filename is not at the end of the URL.
def deobf(String sourceURL, String rawFileName) {
String bon2Version = "2.5.1"
String fileName = URLDecoder.decode(rawFileName, "UTF-8")
String cacheDir = "$project.gradle.gradleUserHomeDir/caches"
String bon2Dir = "$cacheDir/forge_gradle/deobf"
String bon2File = "$bon2Dir/BON2-${bon2Version}.jar"
String obfFile = "$cacheDir/modules-2/files-2.1/${fileName}.jar"
String deobfFile = "$cacheDir/modules-2/files-2.1/${fileName}-deobf.jar"
if (file(deobfFile).exists()) {
return files(deobfFile)
}
String mappingsVer
String remoteMappings = project.hasProperty('remoteMappings') ? project.remoteMappings : 'https://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/'
if (remoteMappings) {
String id = "${forgeVersion.split("\\.")[3]}-$minecraftVersion"
String mappingsZIP = "$cacheDir/forge_gradle/maven_downloader/de/oceanlabs/mcp/mcp_snapshot_nodoc/$id/mcp_snapshot_nodoc-${id}.zip"
zipMappings(mappingsZIP, remoteMappings, bon2Dir)
mappingsVer = "snapshot_$id"
} else {
mappingsVer = "${channel}_$mappingsVersion"
}
download.run {
src "http://jenkins.usrv.eu:8081/nexus/content/repositories/releases/com/github/parker8283/BON2/$bon2Version-CUSTOM/BON2-$bon2Version-CUSTOM-all.jar"
dest bon2File
quiet true
overwrite false
}
download.run {
src sourceURL
dest obfFile
quiet true
overwrite false
}
exec {
commandLine 'java', '-jar', bon2File, '--inputJar', obfFile, '--outputJar', deobfFile, '--mcVer', minecraftVersion, '--mappingsVer', mappingsVer, '--notch'
workingDir bon2Dir
standardOutput = new FileOutputStream("${deobfFile}.log")
}
return files(deobfFile)
}
def zipMappings(String zipPath, String url, String bon2Dir) {
File zipFile = new File(zipPath)
if (zipFile.exists()) {
return
}
String fieldsCache = "$bon2Dir/data/fields.csv"
String methodsCache = "$bon2Dir/data/methods.csv"
download.run {
src "${url}fields.csv"
dest fieldsCache
quiet true
}
download.run {
src "${url}methods.csv"
dest methodsCache
quiet true
}
zipFile.getParentFile().mkdirs()
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))
zos.putNextEntry(new ZipEntry("fields.csv"))
Files.copy(Paths.get(fieldsCache), zos)
zos.closeEntry()
zos.putNextEntry(new ZipEntry("methods.csv"))
Files.copy(Paths.get(methodsCache), zos)
zos.closeEntry()
zos.close()
}
// Helper methods
def checkPropertyExists(String propertyName) {
if (!project.hasProperty(propertyName)) {
throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"gradle.properties\". You can find all properties and their description here: https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/gradle.properties")
}
}
def getFile(String relativePath) {
return new File(projectDir, relativePath)
}
+5
View File
@@ -0,0 +1,5 @@
dependencies {
compileOnly(sourceSets.compileStubs.output)
compileStubs(sourceSets.compileStubsStubs.output)
}
+84
View File
@@ -0,0 +1,84 @@
modName = Angelica
# This is a case-sensitive string to identify your mod. Convention is to use lower case.
modId = angelica
modGroup = com.gtnewhorizons.angelica
# WHY is there no version field?
# The build script relies on git to provide a version via tags. It is super easy and will enable you to always know the
# code base or your binary. Check out this tutorial: https://blog.mattclemente.com/2017/10/13/versioning-with-git-tags/
# Will update your build.gradle automatically whenever an update is available
autoUpdateBuildScript = false
minecraftVersion = 1.7.10
forgeVersion = 10.13.4.1614
# Specify a MCP channel and mappings version for dependency deobfuscation and the deobfParams task.
channel = stable
mappingsVersion = 12
# Define other MCP mappings for dependency deobfuscation
remoteMappings = https://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/
# Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you
# restart Minecraft in development. Choose this dependent on your mod:
# Do you need consistent player progressing (for example Thaumcraft)? -> Select a name
# Do you need to test how your custom blocks interacts with a player that is not the owner? -> leave name empty
developmentEnvironmentUserName = Developer
# Define a source file of your project with:
# public static final String VERSION = "GRADLETOKEN_VERSION";
# The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's
# version in @Mod([...], version = VERSION, [...])
# Leave these properties empty to skip individual token replacements
replaceGradleTokenInFile = Tags.java
gradleTokenModId = GRADLETOKEN_MODID
gradleTokenModName = GRADLETOKEN_MODNAME
gradleTokenVersion = GRADLETOKEN_VERSION
gradleTokenGroupName = GRADLETOKEN_GROUPNAME
# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can
# leave this property empty.
# Example value: apiPackage = api + modGroup = com.myname.mymodid -> com.myname.mymodid.api
apiPackage =
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
# Example value: mymodid_at.cfg
accessTransformersFile =
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
# Adds some debug arguments like verbose output and export
usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
mixinsPackage =
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
# This parameter is for legacy compatibility only
# Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin
coreModClass =
# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class
# that is annotated with @Mod) you want this to be true. When in doubt: leave it on false!
containsMixinsAndOrCoreModOnly = false
# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins.
forceEnableMixins = false
# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated in your jar. It is your
# responsibility check the licence and request permission for distribution, if required.
usesShadowedDependencies = false
# Optional parameter to customize the produced artifacts. Use this to preserver artifact naming when migrating older
# projects. New projects should not use this parameter.
#customArchiveBaseName =
# Optional parameter to prevent the source code from being published
# noPublishedSources =
# Uncomment this to disable spotless checks
# This should only be uncommented to keep it easier to sync with upstream/other forks.
# That is, if there is no other active fork/upstream, NEVER change this.
# disableSpotless = true
Binary file not shown.
+5
View File
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+188
View File
@@ -0,0 +1,188 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# 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"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
Vendored
+100
View File
@@ -0,0 +1,100 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
@@ -1,19 +0,0 @@
package shadersmodcore.client;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.resources.IResourceManager;
public class DefaultTexture extends AbstractTexture {
public DefaultTexture()
{
loadTexture(null);
}
@Override
public void loadTexture(IResourceManager resourcemanager)
{
int[] aint = ShadersTex.createAIntImage(1,0xFFFFFFFF);
ShadersTex.setupTexture(this.getMultiTexID(), aint, 1, 1, false, false);
}
}
-355
View File
@@ -1,355 +0,0 @@
package shadersmodcore.client;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.settings.GameSettings;
import org.lwjgl.Sys;
public class GuiShaders extends GuiScreen
{
/** This GUI's parent GUI. */
protected GuiScreen parentGui;
private int updateTimer = -1;
public boolean needReinit;
/*
private class GuiListShaderpacks {
int posX,posY,sizeX,sizeY;
int viewPosY;
int itemHeight = 20;
int selection;
ArrayList<String> listShaderpacks;
public void draw() {
Tessellator tess = Tessellator.instance;
int listSize = listShaderpacks.size();
int i,j;
for (i=viewPosY/itemHeight, j=Math.min((viewPosY+sizeY)/itemHeight,listSize); i<j; ++i)
{
int itemY = posY-viewPosY+itemHeight*i;
boolean selected = i==selection;
tess.startDrawingQuads();
tess.setColorRGBA(0,0,selected?128:0,128);
tess.addVertex(posX,itemY,0);
tess.addVertex(posX,itemY+itemHeight,0);
tess.addVertex(posX+sizeX,itemY+itemHeight,0);
tess.addVertex(posX+sizeX,itemY,0);
tess.draw();
field_146289_q.drawString(listShaderpacks.get(i), posX, itemY, 0xFFFFFFFF, true);
}
}
}
private GuiListShaderpacks guiListShaderpacks;
*/
private GuiSlotShaders shaderList;
/** This GUI's 'Done' button. */
//private GuiSmallButton doneButton;
public GuiShaders(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
{
this.parentGui = par1GuiScreen;
}
private static String toStringOnOff(boolean value)
{
return value? "On": "Off";
}
@Override
/**
* Adds the buttons (and other controls) to the screen in question.
*/
public void initGui()
{
if (Shaders.shadersConfig==null) Shaders.loadConfig();
List buttonList = this.buttonList;
int width = this.width;
int height = this.height;
buttonList.add(new GuiButton(17, width *3 /4 -60, 30, 160, 18, "NormapMap: " +toStringOnOff(Shaders.configNormalMap)));
buttonList.add(new GuiButton(18, width *3 /4 -60, 50, 160, 18, "SpecularMap: " +toStringOnOff(Shaders.configSpecularMap)));
buttonList.add(new GuiButton(15, width *3 /4 -60, 70, 160, 18, "RenderResMul: "+String.format("%.04f",Shaders.configRenderResMul)));
buttonList.add(new GuiButton(16, width *3 /4 -60, 90, 160, 18, "ShadowResMul: "+String.format("%.04f",Shaders.configShadowResMul)));
buttonList.add(new GuiButton(10, width *3 /4 -60, 110, 160, 18, "HandDepth: " +String.format("%.04f",Shaders.configHandDepthMul)));
buttonList.add(new GuiButton( 9, width *3 /4 -60, 130, 160, 18, "CloudShadow: " +toStringOnOff(Shaders.configCloudShadow)));
//buttonList.add(new GuiButton(14, width *3 /4 -60, 150, 160, 18, "ShadowClipFrustrum: " +toStringOnOff(Shaders.configShadowClipFrustrum)));
buttonList.add(new GuiButton( 4, width *3 /4 -60, 170, 160, 18, "tweakBlockDamage: "+toStringOnOff(Shaders.configTweakBlockDamage)));
buttonList.add(new GuiButton(19, width *3 /4 -60, 190, 160, 18, "OldLighting: "+toStringOnOff(Shaders.configOldLighting)));
//buttonList.add(new GuiButton(11, width *3 /4 -60, 210, 160, 18, "Tex Min: " +Shaders.texMinFilDesc[Shaders.configTexMinFilB]));
//buttonList.add(new GuiButton(12, width *3 /4 -60, 230, 160, 18, "Tex_n Mag: " +Shaders.texMagFilDesc[Shaders.configTexMagFilN]));
//buttonList.add(new GuiButton(13, width *3 /4 -60, 250, 160, 18, "Tex_s Mag: " +Shaders.texMagFilDesc[Shaders.configTexMagFilS]));
buttonList.add(new GuiButton( 6, width *3 /4 -60, height - 25, 160, 20, "Done"));
buttonList.add(new GuiButton( 5, width /4 -80, height - 25, 160, 20, "Open shaderpacks folder"));
this.shaderList = new GuiSlotShaders(this);
this.shaderList.registerScrollButtons(7, 8);//registerScrollButtons(7, 8);
this.needReinit = false;
}
@Override
/** actionPerformed
* Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
*/
protected void actionPerformed(GuiButton par1GuiButton)
{
if (par1GuiButton.enabled)//enabled
{
switch (par1GuiButton.id)//id
{
case 4: /* New block breaking */
Shaders.configTweakBlockDamage = !Shaders.configTweakBlockDamage;
//displayString
par1GuiButton.displayString = "tweakBlockDamage: "+toStringOnOff(Shaders.configTweakBlockDamage);
break;
case 9: /* Cloud shadow */
Shaders.configCloudShadow = !Shaders.configCloudShadow;
par1GuiButton.displayString = "CloudShadow: " +toStringOnOff(Shaders.configCloudShadow);
break;
case 10: /* Hand Depth */
{
float val = Shaders.configHandDepthMul;
float[] choices = { 0.0625f,0.125f,0.25f,0.5f,1.0f };
int i;
if (!isShiftKeyDown()) {//isShiftKeyDown
for (i=0; i<choices.length && choices[i]<=val; ++i) {}
if (i==choices.length) i=0;
} else {
for (i=choices.length-1; i>=0 && val<=choices[i]; --i) {}
if (i<0) i=choices.length-1;
}
Shaders.configHandDepthMul = choices[i];
par1GuiButton.displayString = "HandDepth: "+String.format("%.4f",Shaders.configHandDepthMul);
break;
}
case 15: /* Render Resolution Multiplier */
{
float val = Shaders.configRenderResMul;
float[] choices = { 0.25f,0.3333333333f,0.5f,0.7071067812f,1.0f,1.414213562f,2.0f };
int i;
if (!isShiftKeyDown()) {
for (i=0; i<choices.length && choices[i]<=val; ++i) {}
if (i==choices.length) i=0;
} else {
for (i=choices.length-1; i>=0 && val<=choices[i]; --i) {}
if (i<0) i=choices.length-1;
}
Shaders.configRenderResMul = choices[i];
par1GuiButton.displayString = "RenderResMul: "+String.format("%.4f",Shaders.configRenderResMul);
Shaders.scheduleResize();
break;
}
case 16: /* Shadow Resolution Multiplier */
{
float val = Shaders.configShadowResMul;
float[] choices = { 0.25f,0.3333333333f,0.5f,0.7071067812f,1.0f,1.414213562f,2.0f,3.0f,4.0f };
int i;
if (!isShiftKeyDown()) {
for (i=0; i<choices.length && choices[i]<=val; ++i) {}
if (i==choices.length) i=0;
} else {
for (i=choices.length-1; i>=0 && val<=choices[i]; --i) {}
if (i<0) i=choices.length-1;
}
Shaders.configShadowResMul = choices[i];
par1GuiButton.displayString = "ShadowResMul: "+String.format("%.4f",Shaders.configShadowResMul);
Shaders.scheduleResizeShadow();
break;
}
case 17: /* Normal Map */
{
Shaders.configNormalMap = !Shaders.configNormalMap;
//displayString
par1GuiButton.displayString = "NormapMap: " +toStringOnOff(Shaders.configNormalMap);
mc.scheduleResourcesRefresh(); // schedule refresh texture
break;
}
case 18: /* Normal Map */
{
Shaders.configSpecularMap = !Shaders.configSpecularMap;
//displayString
par1GuiButton.displayString = "SpecularMap: " +toStringOnOff(Shaders.configSpecularMap);
mc.scheduleResourcesRefresh(); // schedule refresh texture
break;
}
case 19: /* old Lighting */
{
Shaders.configOldLighting = !Shaders.configOldLighting;
//displayString
par1GuiButton.displayString = "OldLighting: " +toStringOnOff(Shaders.configOldLighting);
Shaders.updateBlockLightLevel();
mc.renderGlobal.loadRenderers();
break;
}
case 11: /* texture filter */
{
Shaders.configTexMinFilB = (Shaders.configTexMinFilB+1)%Shaders.texMinFilRange;
Shaders.configTexMinFilN = Shaders.configTexMinFilS = Shaders.configTexMinFilB;
par1GuiButton.displayString = "Tex Min: " +Shaders.texMinFilDesc[Shaders.configTexMinFilB];
ShadersTex.updateTextureMinMagFilter();
break;
}
case 12: /* texture filter */
{
Shaders.configTexMagFilN = (Shaders.configTexMagFilN+1)%Shaders.texMagFilRange;
par1GuiButton.displayString = "Tex_n Mag: " +Shaders.texMagFilDesc[Shaders.configTexMagFilN];
ShadersTex.updateTextureMinMagFilter();
break;
}
case 13: /* texture filter */
{
Shaders.configTexMagFilS = (Shaders.configTexMagFilS+1)%Shaders.texMagFilRange;
par1GuiButton.displayString = "Tex_s Mag: " +Shaders.texMagFilDesc[Shaders.configTexMagFilS];
ShadersTex.updateTextureMinMagFilter();
break;
}
case 14: /* shadow frustum clipping */
{
Shaders.configShadowClipFrustrum = !Shaders.configShadowClipFrustrum;
par1GuiButton.displayString = "ShadowClipFrustrum: " +toStringOnOff(Shaders.configShadowClipFrustrum);
ShadersTex.updateTextureMinMagFilter();
break;
}
case 5: /* Open shaderpacks folder */
switch(net.minecraft.util.Util.getOSType())
{
case OSX:
{
try
{
Runtime.getRuntime().exec(new String[] {"/usr/bin/open", Shaders.shaderpacksdir.getAbsolutePath()});
return;
}
catch (IOException var7)
{
var7.printStackTrace();
}
}
break;
case WINDOWS:
{
String var2 = String.format("cmd.exe /C start \"Open file\" \"%s\"", new Object[] {Shaders.shaderpacksdir.getAbsolutePath()});
try
{
Runtime.getRuntime().exec(var2);
return;
}
catch (IOException var6)
{
var6.printStackTrace();
}
}
break;
default:
break;
}
boolean var8 = false;
try
{
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, new Object[] {(new File(mc.mcDataDir, Shaders.shaderpacksdirname)).toURI()});
}
catch (Throwable var5)
{
var5.printStackTrace();
var8 = true;
}
if (var8)
{
System.out.println("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)
{
}
if (needReinit)
{
needReinit = false;
Shaders.loadShaderPack();
Shaders.uninit();
this.mc.renderGlobal.loadRenderers();
}
this.mc.displayGuiScreen(this.parentGui);//displayGuiScreen
break;
default:
this.shaderList.actionPerformed(par1GuiButton);//actionPerformed
}
}
}
@Override
/**
* Draws the screen and all the components in it.
*/
public void drawScreen(int par1, int par2, float par3)
{
drawDefaultBackground(); // background
this.shaderList.drawScreen(par1, par2, par3);//drawScreen
if (this.updateTimer <= 0)
{
this.shaderList.updateList();
this.updateTimer += 20;
}
this.drawCenteredString(this.fontRendererObj, "Shaders " , this.width / 2, 16, 0xffffff);
this.drawCenteredString(this.fontRendererObj, " v"+Shaders.versionString, this.width - 40, 10, 0x808080);
//this.drawCenteredString(this.fontRenderer, "( Place zipped Shader files here. )", this.width / 4 + 10, this.height - 26, 0x808080);
super.drawScreen(par1, par2, par3);
}
@Override
/**
* Called from the main game loop to update the screen.
*/
public void updateScreen()
{
super.updateScreen();
--this.updateTimer;
}
public Minecraft getMc()
{
return this.mc;
}
public void drawCenteredString(String par1, int par2, int par3, int par4)
{
this.drawCenteredString(this.fontRendererObj, par1, par2, par3, par4);
}
}
@@ -1,73 +0,0 @@
package shadersmodcore.client;
import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiSlot;
import net.minecraft.client.renderer.Tessellator;
class GuiSlotShaders extends GuiSlot
{
private ArrayList shaderslist;
final GuiShaders shadersGui;
public GuiSlotShaders(GuiShaders par1GuiShaders)
{
//super(par1GuiShaders.getMc(), par1GuiShaders.width / 2 + 20, par1GuiShaders.height, 40, par1GuiShaders.height - 70, 16);
super(par1GuiShaders.getMc(), par1GuiShaders.width / 2 + 20, par1GuiShaders.height, 40, par1GuiShaders.height - 70, 16);
this.shadersGui = par1GuiShaders;
this.shaderslist = Shaders.listofShaders();
}
public void updateList()
{
this.shaderslist = Shaders.listofShaders();
}
@Override
/** getSize */
protected int getSize() {
return this.shaderslist.size();
}
@Override
/** elementClicked */
protected void elementClicked(int par1, boolean par2, int par3, int par4) {
Shaders.setShaderPack((String)shaderslist.get(par1));
shadersGui.needReinit = false;
Shaders.loadShaderPack();
Shaders.uninit();
}
@Override
/** isSelected */
protected boolean isSelected(int par1) {
return ((String)this.shaderslist.get(par1)).equals(Shaders.currentshadername);
}
@Override
/** getScrollBarX */
protected int getScrollBarX() {
return this.width - 6;
}
@Override
/** getContentHeight */
protected int getContentHeight() {
return this.getSize() * 18;
}
@Override
/** drawBackground */
protected void drawBackground() {
//this.shadersGui.drawDefaultBackground();
}
@Override
/** drawSlot */
protected void drawSlot(int par1, int par2, int par3, int par4,
Tessellator par5, int par6, int par7) {
this.shadersGui.drawCenteredString((String)this.shaderslist.get(par1), this.shadersGui.width / 4 + 10, par3 + 1, 0xffffff);
}
}
@@ -1,17 +0,0 @@
package shadersmodcore.client;
import java.util.HashMap;
import java.util.Map;
public class MultiTexID {
public int base;
public int norm;
public int spec;
public MultiTexID(int baseTex, int normTex, int specTex)
{
base = baseTex;
norm = normTex;
spec = specTex;
}
}
@@ -1,18 +0,0 @@
package shadersmodcore.client;
import java.io.InputStream;
public class ShaderPackDefault implements IShaderPack {
public ShaderPackDefault() {
}
@Override
public void close() {
}
@Override
public InputStream getResourceAsStream(String resName) {
return ShaderPackDefault.class.getResourceAsStream(resName);
}
}
@@ -1,38 +0,0 @@
package shadersmodcore.client;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class ShaderPackFolder implements IShaderPack {
protected File packFile;
public ShaderPackFolder(String name, File file)
{
packFile = file;
}
@Override
public void close() {
}
@Override
public InputStream getResourceAsStream(String resName)
{
try
{
File resFile = new File(packFile, resName.substring(1));
if (resFile != null)
{
return new BufferedInputStream(new FileInputStream(resFile));
}
}
catch (Exception excp)
{
}
return null;
}
}
@@ -1,22 +0,0 @@
package shadersmodcore.client;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
public class ShaderPackNone implements IShaderPack {
public ShaderPackNone() {
}
@Override
public void close() {
}
@Override
public InputStream getResourceAsStream(String resName) {
return null;
}
}
@@ -1,65 +0,0 @@
package shadersmodcore.client;
import java.io.File;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ShaderPackZip implements IShaderPack {
protected File packFile;
protected ZipFile packZipFile;
public ShaderPackZip(String name, File file)
{
packFile = file;
packZipFile = null;
}
@Override
public void close()
{
if(packZipFile != null)
{
try
{
packZipFile.close();
}
catch (Exception excp)
{
}
packZipFile = null;
}
}
@Override
public InputStream getResourceAsStream(String resName)
{
if (packZipFile == null)
{
try
{
packZipFile = new ZipFile(packFile);
}
catch (Exception excp)
{
}
}
if (packZipFile != null)
{
try
{
ZipEntry entry = packZipFile.getEntry(resName.substring(1));
if (entry != null)
{
return packZipFile.getInputStream(entry);
}
}
catch (Exception excp)
{
}
}
return null;
}
}
File diff suppressed because it is too large. Load diff
@@ -1,105 +0,0 @@
package shadersmodcore.client;
import static org.objectweb.asm.Opcodes.INVOKESTATIC;
import java.nio.IntBuffer;
import org.lwjgl.opengl.GL11;
import shadersmodcore.transform.Names;
import net.minecraft.block.Block;
import net.minecraft.block.BlockIce;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.culling.Frustrum;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemCloth;
public class ShadersRender {
public static void setFrustrumPosition(Frustrum frustrum, double x, double y, double z)
{
frustrum.setPosition(x, y, z);
}
public static void clipRenderersByFrustrum(RenderGlobal renderGlobal, Frustrum frustrum, float par2)
{
Shaders.checkGLError("pre clip");
if (!Shaders.isShadowPass) {
WorldRenderer[] worldRenderers = renderGlobal.worldRenderers;
for (int i = 0; i < worldRenderers.length; ++i)
{
if (!worldRenderers[i].skipAllRenderPasses())
{
worldRenderers[i].updateInFrustum(frustrum);
}
}
} else {
WorldRenderer[] worldRenderers = renderGlobal.worldRenderers;
for (int i = 0; i < worldRenderers.length; ++i)
{
if (!worldRenderers[i].skipAllRenderPasses())
{
worldRenderers[i].isInFrustum = true;
}
}
}
}
public static void renderHand0(EntityRenderer er, float par1, int par2) {
if (!Shaders.isShadowPass)
{
Item item = (Shaders.itemToRender!=null)? Shaders.itemToRender.getItem(): null;
Block block = (item instanceof ItemBlock)? ((ItemBlock)item).field_150939_a: null;
// ItemCloth is for semitransparent block : stained glass, wool
if (!(item instanceof ItemBlock) && !(block instanceof BlockIce))
{
Shaders.readCenterDepth();
Shaders.beginHand();
er.renderHand(par1, par2);
Shaders.endHand();
Shaders.isHandRendered = true;
}
}
}
public static void renderHand1(EntityRenderer er, float par1, int par2) {
if (!Shaders.isShadowPass)
{
if (!Shaders.isHandRendered) {
Shaders.readCenterDepth();
GL11.glEnable(GL11.GL_BLEND);
Shaders.beginHand();
er.renderHand(par1, par2);
Shaders.endHand();
Shaders.isHandRendered = true;
}
}
}
public static void renderItemFP(ItemRenderer itemRenderer, float par1) {
// clear depth buffer locally
GL11.glDepthFunc(GL11.GL_GEQUAL);
GL11.glPushMatrix();
IntBuffer drawBuffers = Shaders.activeDrawBuffers;
Shaders.setDrawBuffers(Shaders.drawBuffersNone);
itemRenderer.renderItemInFirstPerson(par1);
Shaders.setDrawBuffers(drawBuffers);
GL11.glPopMatrix();
GL11.glDepthFunc(GL11.GL_LEQUAL);
// really render item or hand
itemRenderer.renderItemInFirstPerson(par1);
}
public static void renderFPOverlay(EntityRenderer er, float par1, int par2) {
Shaders.beginFPOverlay();
er.renderHand(par1, par2);
Shaders.endFPOverlay();
}
}
-279
View File
@@ -1,279 +0,0 @@
package shadersmodcore.client;
import static org.lwjgl.opengl.ARBVertexShader.glDisableVertexAttribArrayARB;
import static org.lwjgl.opengl.ARBVertexShader.glEnableVertexAttribArrayARB;
import static org.lwjgl.opengl.ARBVertexShader.glVertexAttribPointerARB;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
import java.util.Arrays;
import org.lwjgl.opengl.ARBVertexBufferObject;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL13;
import shadersmodcore.transform.SMCLog;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
public class ShadersTess {
public static final int vertexStride = 16;
public static int draw(Tessellator tess) {
if (!tess.isDrawing)
{
throw new IllegalStateException("Not tesselating!");
}
else
{
tess.isDrawing = false;
if (tess.drawMode == GL11.GL_QUADS && tess.vertexCount % 4 != 0) {
SMCLog.warning("%s", "bad vertexCount");
}
int voffset = 0;
int realDrawMode = tess.drawMode;
while (voffset < tess.vertexCount)
{
int vcount;
vcount = Math.min(tess.vertexCount - voffset, tess.byteBuffer.capacity() / (vertexStride*4));
if (realDrawMode == GL11.GL_QUADS)
vcount = vcount /4 *4;
tess.floatBuffer.clear();
tess.shortBuffer.clear();
tess.intBuffer.clear();
tess.intBuffer.put(tess.rawBuffer, voffset * vertexStride, vcount * vertexStride);
tess.byteBuffer.position(0);
tess.byteBuffer.limit(vcount * (vertexStride * 4));
voffset += vcount;
if (tess.hasTexture)
{
tess.floatBuffer.position(3);
GL11.glTexCoordPointer(2, (vertexStride * 4), tess.floatBuffer);
GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
}
if (tess.hasBrightness)
{
OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit);
tess.shortBuffer.position(6*2);
GL11.glTexCoordPointer(2, (vertexStride * 4), tess.shortBuffer);
GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
}
if (tess.hasColor)
{
tess.byteBuffer.position(5*4);
GL11.glColorPointer(4, true, (vertexStride * 4), tess.byteBuffer);
GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
}
if (tess.hasNormals)
{
tess.floatBuffer.position(9);
GL11.glNormalPointer((vertexStride * 4), tess.floatBuffer);
GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY);
}
tess.floatBuffer.position(0);
GL11.glVertexPointer(3, (vertexStride * 4), tess.floatBuffer);
ShadersTess.preDrawArray(tess);
GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
GL11.glDrawArrays(realDrawMode, 0, vcount);
}
// end loop
GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
ShadersTess.postDrawArray(tess);
if (tess.hasTexture)
{
GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
}
if (tess.hasBrightness)
{
OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit);
GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
}
if (tess.hasColor)
{
GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
}
if (tess.hasNormals)
{
GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY);
}
int n = tess.rawBufferIndex * 4;
tess.reset();
return n;
}
}
public static void preDrawArray(Tessellator tess)
{
//Shaders.checkGLError("preDrawArray");
if (Shaders.useMultiTexCoord3Attrib && tess.hasTexture)
{
GL13.glClientActiveTexture(GL13.GL_TEXTURE3);
GL11.glTexCoordPointer(2, (vertexStride * 4), (FloatBuffer)tess.floatBuffer.position(12));
GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
GL13.glClientActiveTexture(GL13.GL_TEXTURE0);
}
if (Shaders.useMidTexCoordAttrib && tess.hasTexture)
{
glVertexAttribPointerARB(Shaders.midTexCoordAttrib, 2, false, vertexStride*4, (FloatBuffer)tess.floatBuffer.position(12));
glEnableVertexAttribArrayARB(Shaders.midTexCoordAttrib);
}
if (Shaders.useEntityAttrib)
{
glVertexAttribPointerARB(Shaders.entityAttrib, 3, false, false, vertexStride*4, (ShortBuffer)tess.shortBuffer.position(7*2));
glEnableVertexAttribArrayARB(Shaders.entityAttrib);
}
//Shaders.checkGLError("preDrawArray");
}
public static void preDrawArrayVBO(Tessellator tess)
{
//Shaders.checkGLError("preDrawArray");
if (Shaders.useMultiTexCoord3Attrib && tess.hasTexture)
{
GL13.glClientActiveTexture(GL13.GL_TEXTURE3);
GL11.glTexCoordPointer(2, GL11.GL_FLOAT, (vertexStride * 4), 12*4L);
GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
GL13.glClientActiveTexture(GL13.GL_TEXTURE0);
}
if (Shaders.useMidTexCoordAttrib && tess.hasTexture)
{
glVertexAttribPointerARB(Shaders.midTexCoordAttrib, 2, GL11.GL_FLOAT, false, vertexStride*4, 12*4L);
glEnableVertexAttribArrayARB(Shaders.midTexCoordAttrib);
}
if (Shaders.useEntityAttrib)
{
glVertexAttribPointerARB(Shaders.entityAttrib, 3, GL11.GL_SHORT, false, vertexStride*4, 7*4L);
glEnableVertexAttribArrayARB(Shaders.entityAttrib);
}
//Shaders.checkGLError("preDrawArray");
}
public static void postDrawArray(Tessellator tess)
{
//Shaders.checkGLError("postDrawArray");
if (Shaders.useEntityAttrib)
{
glDisableVertexAttribArrayARB(Shaders.entityAttrib);
}
if (Shaders.useMidTexCoordAttrib && tess.hasTexture)
{
glDisableVertexAttribArrayARB(Shaders.midTexCoordAttrib);
}
if (Shaders.useMultiTexCoord3Attrib && tess.hasTexture)
{
GL13.glClientActiveTexture(GL13.GL_TEXTURE3);
GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
GL13.glClientActiveTexture(GL13.GL_TEXTURE0);
}
//Shaders.checkGLError("postDrawArray");
}
public static void addVertex(Tessellator tess, double parx, double pary, double parz) {
int[] rawBuffer = tess.rawBuffer;
int rbi = tess.rawBufferIndex;
float fx = (float) (parx + tess.xOffset);
float fy = (float) (pary + tess.yOffset);
float fz = (float) (parz + tess.zOffset);
// Check if buffer is nearly full
if (rbi >= tess.bufferSize - vertexStride*4)
{
if (tess.bufferSize >= 0x1000000) {
// Max size reached. Just draw.
if (tess.addedVertices % 4 == 0)
{
tess.draw();
tess.isDrawing = true;
}
} else if (tess.bufferSize > 0) {
// Expand
tess.bufferSize *= 2;
tess.rawBuffer = rawBuffer = Arrays.copyOf(tess.rawBuffer, tess.bufferSize);
System.out.format("Expand tesselator buffer %d\n",tess.bufferSize);
} else {
// Initialize
tess.bufferSize = 0x10000;
tess.rawBuffer = rawBuffer = new int[tess.bufferSize];
}
}
// shaders mod calculate normal and mid UV
if (tess.drawMode == 7)
{
int i = tess.addedVertices % 4;
float[] vertexPos = tess.vertexPos;
vertexPos[i*4+0] = fx;
vertexPos[i*4+1] = fy;
vertexPos[i*4+2] = fz;
if (i==3)
{
// calculate normal
float x1 = vertexPos[ 8+0] - vertexPos[ +0];
float y1 = vertexPos[ 8+1] - vertexPos[ +1];
float z1 = vertexPos[ 8+2] - vertexPos[ +2];
float x2 = vertexPos[12+0] - vertexPos[ 4+0];
float y2 = vertexPos[12+1] - vertexPos[ 4+1];
float z2 = vertexPos[12+2] - vertexPos[ 4+2];
float vnx = y1*z2-y2*z1;
float vny = z1*x2-z2*x1;
float vnz = x1*y2-x2*y1;
float lensq = vnx*vnx+vny*vny+vnz*vnz;
float mult = (lensq!=0.0)? (float)(1f/Math.sqrt(lensq)): 1f;
rawBuffer[rbi+( 9-vertexStride*3)] =
rawBuffer[rbi+( 9-vertexStride*2)] =
rawBuffer[rbi+( 9-vertexStride*1)] = Float.floatToRawIntBits(tess.normalX = vnx*mult);
rawBuffer[rbi+(10-vertexStride*3)] =
rawBuffer[rbi+(10-vertexStride*2)] =
rawBuffer[rbi+(10-vertexStride*1)] = Float.floatToRawIntBits(tess.normalY = vny*mult);
rawBuffer[rbi+(11-vertexStride*3)] =
rawBuffer[rbi+(11-vertexStride*2)] =
rawBuffer[rbi+(11-vertexStride*1)] = Float.floatToRawIntBits(tess.normalZ = vnz*mult);
tess.hasNormals = true;
// mid UV
tess.midTextureU = (
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;
tess.midTextureV = (
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(tess.midTextureU);
rawBuffer[rbi+(13-vertexStride*3)] =
rawBuffer[rbi+(13-vertexStride*2)] =
rawBuffer[rbi+(13-vertexStride*1)] = Float.floatToRawIntBits(tess.midTextureV);
}
}
// end normal and mid UV calculation
++tess.addedVertices;
rawBuffer[rbi + 0] = Float.floatToRawIntBits((float)fx);
rawBuffer[rbi + 1] = Float.floatToRawIntBits((float)fy);
rawBuffer[rbi + 2] = Float.floatToRawIntBits((float)fz);
rawBuffer[rbi + 3] = Float.floatToRawIntBits((float)tess.textureU);
rawBuffer[rbi + 4] = Float.floatToRawIntBits((float)tess.textureV);
rawBuffer[rbi + 5] = tess.color;
rawBuffer[rbi + 6] = tess.brightness;
rawBuffer[rbi + 7] = Shaders.getEntityData();
rawBuffer[rbi + 8] = Shaders.getEntityData2();
rawBuffer[rbi + 9] = Float.floatToRawIntBits((float)tess.normalX);
rawBuffer[rbi +10] = Float.floatToRawIntBits((float)tess.normalY);
rawBuffer[rbi +11] = Float.floatToRawIntBits((float)tess.normalZ);
rawBuffer[rbi +12] = Float.floatToRawIntBits((float)tess.midTextureU);
rawBuffer[rbi +13] = Float.floatToRawIntBits((float)tess.midTextureV);
tess.rawBufferIndex = rbi += vertexStride;
++tess.vertexCount;
}
}
-969
View File
@@ -1,969 +0,0 @@
package shadersmodcore.client;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.imageio.ImageIO;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.renderer.texture.ITextureObject;
import net.minecraft.client.renderer.texture.LayeredTexture;
import net.minecraft.client.renderer.texture.Stitcher;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.texture.TextureUtil;
import net.minecraft.util.ResourceLocation;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.IResource;
import net.minecraft.client.resources.IResourceManager;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.ARBTextureStorage;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL14;
import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL30;
import org.lwjgl.opengl.GL30.*;
public class ShadersTex {
public static final int initialBufferSize = 1048576;
public static ByteBuffer byteBuffer = BufferUtils.createByteBuffer(initialBufferSize*4);
public static IntBuffer intBuffer = byteBuffer.asIntBuffer();
public static int[] intArray = new int[initialBufferSize];
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 TextureMap updatingTextureMap = null;
public static TextureAtlasSprite updatingSprite = null;
public static MultiTexID updatingTex = null;
public static MultiTexID boundTex = null;
public static int updatingPage = 0;
public static String iconName = null;
public static IntBuffer getIntBuffer(int size)
{
if (intBuffer.capacity() < size)
{
int bufferSize = roundUpPOT(size);
byteBuffer = BufferUtils.createByteBuffer(bufferSize*4);
intBuffer = byteBuffer.asIntBuffer();
}
return intBuffer;
}
public static int[] getIntArray(int size)
{
if (intArray.length < size)
{
intArray = null;
intArray = new int[roundUpPOT(size)];
}
return intArray;
}
public static int roundUpPOT(int x)
{
int i = x-1;
i |= (i>>1);
i |= (i>>2);
i |= (i>>4);
i |= (i>>8);
i |= (i>>16);
return i+1;
}
public static IntBuffer fillIntBuffer(int size, int value)
{
int[] aint = getIntArray(size);
IntBuffer intBuf = getIntBuffer(size);
Arrays.fill(intArray, 0, size, value);
intBuffer.put(intArray, 0, size);
return intBuffer;
}
public static int[] createAIntImage(int size)
{
int[] aint = new int[size*3];
Arrays.fill(aint, 0, size, defBaseTexColor);
Arrays.fill(aint, size, size*2, defNormTexColor);
Arrays.fill(aint, size*2, size*3, defSpecTexColor);
return aint;
}
public static int[] createAIntImage(int size, int color)
{
int[] aint = new int[size*3];
Arrays.fill(aint, 0, size, color);
Arrays.fill(aint, size, size*2, defNormTexColor);
Arrays.fill(aint, size*2, size*3, defSpecTexColor);
return aint;
}
public static MultiTexID getMultiTexID(AbstractTexture tex)
{
MultiTexID multiTex = tex.multiTex;
if (multiTex==null)
{
int baseTex = tex.getGlTextureId();
multiTex = multiTexMap.get(Integer.valueOf(baseTex));
if (multiTex == null)
{
multiTex = new MultiTexID(baseTex, GL11.glGenTextures(), GL11.glGenTextures());
multiTexMap.put(baseTex, multiTex);
}
tex.multiTex = multiTex;
}
return multiTex;
}
public static void deleteTextures(AbstractTexture atex)
{
int texid = atex.glTextureId;
if (texid != -1)
{
GL11.glDeleteTextures(texid);
atex.glTextureId = -1;
}
MultiTexID multiTex = atex.multiTex;
if (multiTex != null)
{
atex.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.");
GL11.glDeleteTextures(multiTex.base);
}
}
}
/** Remove MultiTexID object reference and delete textures */
public static int deleteMultiTex(ITextureObject tex)
{
if (tex instanceof AbstractTexture) {
deleteTextures((AbstractTexture)tex);
} else {
GL11.glDeleteTextures(tex.getGlTextureId());
}
return 0;
}
public static void bindNSTextures(int normTex, int specTex)
{
//Shaders.checkGLError("pre bindNSTextures");
if (Shaders.isRenderingWorld && Shaders.activeTexUnit == GL13.GL_TEXTURE0)
{
GL13.glActiveTexture(GL13.GL_TEXTURE2);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, normTex);
GL13.glActiveTexture(GL13.GL_TEXTURE3);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, specTex);
GL13.glActiveTexture(GL13.GL_TEXTURE0);
}
//Shaders.checkGLError("bindNSTextures");
}
public static void bindNSTextures(MultiTexID multiTex)
{
bindNSTextures(multiTex.norm, multiTex.spec);
}
public static void bindTextures(int baseTex, int normTex, int specTex)
{
//Shaders.checkGLError("pre bindTextures");
if (Shaders.isRenderingWorld && Shaders.activeTexUnit == GL13.GL_TEXTURE0)
{
GL13.glActiveTexture(GL13.GL_TEXTURE2);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, normTex);
GL13.glActiveTexture(GL13.GL_TEXTURE3);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, specTex);
GL13.glActiveTexture(GL13.GL_TEXTURE0);
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, baseTex);
//Shaders.checkGLError("bindTextures");
}
public static void bindTextures(MultiTexID multiTex)
{
boundTex = multiTex;
if (Shaders.isRenderingWorld && Shaders.activeTexUnit == GL13.GL_TEXTURE0)
{
if (Shaders.configNormalMap) {
GL13.glActiveTexture(GL13.GL_TEXTURE2);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
}
if (Shaders.configSpecularMap) {
GL13.glActiveTexture(GL13.GL_TEXTURE3);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec);
}
GL13.glActiveTexture(GL13.GL_TEXTURE0);
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
}
public static void bindTexture(ITextureObject tex)
{
if (tex instanceof TextureMap) {
Shaders.atlasSizeX = ((TextureMap)tex).atlasWidth;
Shaders.atlasSizeY = ((TextureMap)tex).atlasHeight;
} else {
Shaders.atlasSizeX = 0;
Shaders.atlasSizeY = 0;
}
bindTextures(tex.getMultiTexID());
}
/** not used */
public static void bindTextures(int baseTex)
{
MultiTexID multiTex = multiTexMap.get(Integer.valueOf(baseTex));
bindTextures(multiTex);
}
public static void allocTexStorage(int width, int height, int maxLevel)
{
Shaders.checkGLError("pre allocTexStorage");
int level;
for (level=0; (width>>level)>0 && (height>>level)>0 /*&& level<=maxLevel*/; ++level) {
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, level, GL11.GL_RGBA, (width>>level), (height>>level), 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)null);
}
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, level-1);
Shaders.checkGLError("allocTexStorage");
//clear unused level otherwise glTexSubImage2D will crash on AMD when reallocation texture of different size.
//for ( ; level < 16 ; ++level) {
// GL11.glTexImage2D(GL11.GL_TEXTURE_2D, level, GL11.GL_RGBA, 0, 0, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)null);
//}
GL11.glGetError(); // It usually returns error 0x0501 Invalid value for width 0 height 0. Ignore it.
}
// for Dynamic Texture
public static void initDynamicTexture(int texID, int width, int height, DynamicTexture tex)
{
MultiTexID multiTex = tex.getMultiTexID();
int[] aint = tex.getTextureData();
int size = width * height;
Arrays.fill(aint, size, size*2, defNormTexColor);
Arrays.fill(aint, size*2, size*3, defSpecTexColor);
// base texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
allocTexStorage(width,height,0);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
// norm texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
allocTexStorage(width,height,0);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
// spec texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec);
allocTexStorage(width,height,0);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
// base texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
}
public static ITextureObject createDefaultTexture()
{
DynamicTexture tex = new DynamicTexture(1,1);
tex.getTextureData()[0] = 0xffffffff;
tex.updateDynamicTexture();
return tex;
}
// 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+" ");
updatingTextureMap = tex;
tex.atlasWidth = width;
tex.atlasHeight = height;
MultiTexID multiTex = getMultiTexID(tex);
updatingTex = multiTex;
TextureUtil.allocateTextureImpl(multiTex.base, mipmapLevels, width, height, anisotropy);
if (Shaders.configNormalMap )
TextureUtil.allocateTextureImpl(multiTex.norm, mipmapLevels, width, height, anisotropy);
if (Shaders.configSpecularMap)
TextureUtil.allocateTextureImpl(multiTex.spec, mipmapLevels, width, height, anisotropy);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texID);
}
public static TextureAtlasSprite setSprite(TextureAtlasSprite tas)
{
return updatingSprite = tas;
}
public static String setIconName(String name)
{
return iconName = name;
}
public static void uploadTexSubForLoadAtlas(int[][] data, int width, int height, int xoffset, int yoffset, boolean linear, boolean clamp)
{
TextureUtil.uploadTextureMipmap(data, width, height, xoffset, yoffset, linear, clamp);
boolean border = updatingSprite.useAnisotropicFiltering;
int[][] aaint;
//
if (Shaders.configNormalMap ) {
aaint = readImageAndMipmaps(iconName+"_n", width, height, data.length, border, defNormTexColor);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.norm);
TextureUtil.uploadTextureMipmap(aaint, width, height, xoffset, yoffset, linear, clamp);
}
//
if (Shaders.configSpecularMap) {
aaint = readImageAndMipmaps(iconName+"_s", width, height, data.length, border, defSpecTexColor);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.spec);
TextureUtil.uploadTextureMipmap(aaint, width, height, xoffset, yoffset, linear, clamp);
}
//
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.base);
}
public static int[][] readImageAndMipmaps(String name, int width, int height, int numLevels, boolean border, int defColor)
{
int[][] aaint = new int[numLevels][];
int[] aint;
aaint[0] = aint = new int[width*height];
boolean goodImage = false;
BufferedImage image = readImage(updatingTextureMap.completeResourceLocation(new ResourceLocation(name), 0));
if (image != null) {
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
if (imageWidth + (border? 16: 0) == width)
{
goodImage = true;
image.getRGB(0, 0, imageWidth, imageWidth, aint, 0, imageWidth);
if (border)
TextureUtil.prepareAnisotropicData(aint, imageWidth, imageWidth, 8);
}
}
if (!goodImage) {
Arrays.fill(aint, defColor);
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.spec);
aaint = genMipmapsSimple(aaint.length-1, width, aaint);
return aaint;
}
public static BufferedImage readImage(ResourceLocation resLoc)
{
BufferedImage image = null;
InputStream istr = null;
try {
istr = resManager.getResource(resLoc).getInputStream();
image = ImageIO.read(istr);
} catch (IOException e) {
}
if (istr != null) {
try {
istr.close();
} catch (IOException e) {
}
istr = null;
}
return image;
}
public static int[][] genMipmapsSimple(int maxLevel, int width, int[][]data)
{
int level;
for (level=1; level<=maxLevel; ++level)
{
if (data[level]==null)
{
int cw = width>>level;
int pw = cw*2;
int[] aintp = data[level-1];
int[] aintc = data[level] = new int[cw*cw];
int x,y;
for (y=0; y<cw; ++y) {
for (x=0; x<cw; ++x) {
int ppos = y*2*pw+x*2;
aintc[y*cw+x] = blend4Simple(aintp[ppos],aintp[ppos+1],aintp[ppos+pw],aintp[ppos+pw+1]);
}
}
}
}
return data;
}
public static void uploadTexSub(int[][] data, int width, int height, int xoffset, int yoffset, boolean linear, boolean clamp)
{
TextureUtil.uploadTextureMipmap(data, width, height, xoffset, yoffset, linear, clamp);
}
public static int blend4Alpha(int c0, int c1, int c2, int c3)
{
int a0 = (c0 >>> 24) & 255;
int a1 = (c1 >>> 24) & 255;
int a2 = (c2 >>> 24) & 255;
int a3 = (c3 >>> 24) & 255;
int as = a0+a1+a2+a3;
int an = (as+2)/4;
//int an = Math.min(Math.min(Math.min(a0,a1),a2),a3);
int dv;
if (as != 0) {
dv = as;
} else {
dv=4; a3=a2=a1=a0=1;
}
int frac = (dv+1)/2;
//return (((Math.min(Math.min(Math.min(a0,a1),a2),a3)/ 4) << 24) |
int color = (an << 24) |
(((((c0>>>16)&255)*a0 + ((c1>>>16)&255)*a1 + ((c2>>>16)&255)*a2 + ((c3>>>16)&255)*a3 + frac)/dv) << 16) |
(((((c0>>> 8)&255)*a0 + ((c1>>> 8)&255)*a1 + ((c2>>> 8)&255)*a2 + ((c3>>> 8)&255)*a3 + frac)/dv) << 8) |
(((((c0>>> 0)&255)*a0 + ((c1>>> 0)&255)*a1 + ((c2>>> 0)&255)*a2 + ((c3>>> 0)&255)*a3 + frac)/dv) << 0) ;
return color;
}
public static int blend4Simple(int c0, int c1, int c2, int c3)
{
int color =
(((((c0>>>24)&255) + ((c1>>>24)&255) + ((c2>>>24)&255) + ((c3>>>24)&255) + 2)/4) << 24) |
(((((c0>>>16)&255) + ((c1>>>16)&255) + ((c2>>>16)&255) + ((c3>>>16)&255) + 2)/4) << 16) |
(((((c0>>> 8)&255) + ((c1>>> 8)&255) + ((c2>>> 8)&255) + ((c3>>> 8)&255) + 2)/4) << 8) |
(((((c0>>> 0)&255) + ((c1>>> 0)&255) + ((c2>>> 0)&255) + ((c3>>> 0)&255) + 2)/4) << 0) ;
return color;
}
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;
h1 = h2 = height;
o1 = o2 = offset;
// generate mipmap from big to small
o2 = offset; w2 = width; h2 = height;
o1 = 0; w1 = 0; h1 = 0;
for (level=0; w2>1 && h2>1; ++level,w2=w1,h2=h1,o2=o1) {
o1 = o2 + w2*h2;
w1 = w2/2; h1 = h2/2;
for (int y=0; y<h1; ++y)
{
int p1 = o1+y*w1;
int p2 = o2+y*2*w2;
for (int x=0; x<w1; ++x)
{
aint[p1+x] = blend4Alpha(
aint[p2 +(x*2 )],
aint[p2 +(x*2+1)],
aint[p2+w2+(x*2 )],
aint[p2+w2+(x*2+1)]);
}
}
}
// fix black pixels from small to big
while (level>0)
{
--level;
w2 = width>>level;
h2 = height>>level;
o2 = o1 - w2*h2;
int p2 = o2;
for (int y=0; y<h2; ++y)
{
for (int x=0; x<w2; ++x)
{
//p2 = o2 + y*w2 + x;
if (aint[p2] == 0) {
aint[p2] = aint[o1 +(y/2)*w1 +(x/2)] & 0x00ffffff;
}
++p2;
}
}
o1 = o2;
w1 = w2;
h1 = h2;
}
}
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;
h1 = h2 = height;
o1 = o2 = offset;
// generate mipmap from big to small
o2 = offset; w2 = width; h2 = height;
o1 = 0; w1 = 0; h1 = 0;
for (level=0; w2>1 && h2>1; ++level,w2=w1,h2=h1,o2=o1) {
o1 = o2 + w2*h2;
w1 = w2/2; h1 = h2/2;
for (int y=0; y<h1; ++y)
{
int p1 = o1+y*w1;
int p2 = o2+y*2*w2;
for (int x=0; x<w1; ++x)
{
aint[p1+x] = blend4Simple(
aint[p2 +(x*2 )],
aint[p2 +(x*2+1)],
aint[p2+w2+(x*2 )],
aint[p2+w2+(x*2+1)]);
}
}
}
// fix black pixels from small to big
while (level>0)
{
--level;
w2 = width>>level;
h2 = height>>level;
o2 = o1 - w2*h2;
int p2 = o2;
for (int y=0; y<h2; ++y)
{
for (int x=0; x<w2; ++x)
{
//p2 = o2 + y*w2 + x;
if (aint[p2] == 0) {
aint[p2] = aint[o1 +(y/2)*w1 +(x/2)] & 0x00ffffff;
}
++p2;
}
}
o1 = o2;
w1 = w2;
h1 = h2;
}
}
public static boolean isSemiTransparent(int[] aint, int width, int height)
{
int size = width*height;
// grass side texture ?;
if (aint[0] >>> 24 == 255 && aint[size-1] == 0)
return true;
for (int i=0; i<size; ++i)
{
int alpha = aint[i] >>> 24;
if (alpha!=0 && alpha!=255)
return true;
}
return false;
}
public static void updateSubImage1(int[] src, int width, int height, int posX, int posY, int page, int color)
{
int size = width * height;
IntBuffer intBuf = getIntBuffer(size);
int[] aint = getIntArray((size*4+2)/3);
if (src.length >= size*(page+1))
{
System.arraycopy(src, size*page, aint, 0, size);
}
else
{
Arrays.fill(aint, color);
}
//
// if (page == 0)
genMipmapAlpha(aint,0,width,height);
// else
// genMipmapSimple(aint,0,width,height);
//
for (int level=0, offset=0, lw=width, lh=height, px=posX, py=posY;
lw>0 && lh>0;
++level)
{
int lsize = lw*lh;
intBuf.clear();
intBuf.put(aint, offset, lsize).position(0).limit(lsize);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, level, px, py, lw, lh, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
offset += lsize; lw/=2; lh/=2; px/=2; py/=2;
}
intBuf.clear();
}
public static void updateSubTex1(int[] src, int width, int height, int posX, int posY)
{
int level;
int cw;
int ch;
int cx;
int cy;
for (level = 0, cw=width, ch=height, cx=posX, cy=posY;
cw>0 && ch>0;
++level, cw/=2, ch/=2, cx/=2, cy/=2)
{
GL11.glCopyTexSubImage2D(GL11.GL_TEXTURE_2D, level, cx, cy, 0, 0, cw, ch);
}
}
/* updateSubImage for single Texture with mipmap */
public static void updateSubImage1(int[][] src, int width, int height, int posX, int posY, int page, int color)
{
int size = width * height;
IntBuffer intBuf = getIntBuffer(size);
int numLevel = src.length;
for (int level=0, //offset=0,
lw=width, lh=height, px=posX, py=posY;
lw>0 && lh>0 && level<numLevel;
++level)
{
int lsize = lw*lh;
intBuf.clear();
intBuf.put(src[level], 0/*offset*/, lsize).position(0).limit(lsize);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, level, px, py, lw, lh, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
//offset += lsize;
lw/=2; lh/=2; px/=2; py/=2;
}
intBuf.clear();
}
public static void setupTextureMipmap(TextureMap tex)
{
/*
MultiTexID multiTex = tex.getMultiTexID();
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec);
GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
*/
}
public static void updateDynamicTexture(int texID, int[] src, int width, int height, DynamicTexture tex)
{
MultiTexID multiTex = tex.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);
updateSubImage1(src, width, height, 0, 0, 2, defSpecTexColor);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
updateSubImage1(src, width, height, 0, 0, 0, defBaseTexColor);
}
public static void updateSubImage(int[] src, int width, int height, int posX, int posY, boolean linear, boolean clamp)
{
if (updatingTex != null)
{
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.norm);
updateSubImage1(src, width, height, posX, posY, 1, defNormTexColor);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.spec);
updateSubImage1(src, width, height, posX, posY, 2, defSpecTexColor);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, updatingTex.base);
}
updateSubImage1(src, width, height, posX, posY, 0, defBaseTexColor);
}
// not used
public static void updateAnimationTextureMap(TextureMap tex, List tasList)
{
Iterator<TextureAtlasSprite> iterator;
MultiTexID multiTex = tex.getMultiTexID();
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
for (iterator = tasList.iterator(); iterator.hasNext(); )
{
TextureAtlasSprite tas = iterator.next();
tas.updateAnimation();
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
for (iterator = tasList.iterator(); iterator.hasNext(); )
{
TextureAtlasSprite tas = iterator.next();
tas.updateAnimation();
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
for (iterator = tasList.iterator(); iterator.hasNext(); )
{
TextureAtlasSprite tas = iterator.next();
tas.updateAnimation();
}
}
public static void setupTexture(MultiTexID multiTex, int[] src, int width, int height, boolean linear, boolean clamp)
{
int mmfilter = linear? GL11.GL_LINEAR: GL11.GL_NEAREST;
int wraptype = clamp? GL11.GL_CLAMP: GL11.GL_REPEAT;
int size = width * height;
IntBuffer intBuf = getIntBuffer(size);
//
intBuf.clear();
intBuf.put(src, 0, size).position(0).limit(size);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, mmfilter);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, mmfilter);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, wraptype);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, wraptype);
//
intBuf.put(src, size, size).position(0).limit(size);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, mmfilter);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, mmfilter);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, wraptype);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, wraptype);
//
intBuf.put(src, size*2, size).position(0).limit(size);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, mmfilter);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, mmfilter);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, wraptype);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, wraptype);
//
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
}
/* currently not used */
public static void updateSubImage(MultiTexID multiTex, int[] src, int width, int height, int posX, int posY, boolean linear, boolean clamp)
{
int size = width * height;
IntBuffer intBuf = getIntBuffer(size);
//
intBuf.clear();
intBuf.put(src, 0, size);
intBuf.position(0).limit(size);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, posX, posY, width, height, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
if (src.length == size*3)
{
intBuf.clear();
intBuf.put(src, size, size).position(0);
intBuf.position(0).limit(size);
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, posX, posY, width, height, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
if (src.length == size*3)
{
intBuf.clear();
intBuf.put(src, size*2, size);
intBuf.position(0).limit(size);
}
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, posX, posY, width, height, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, intBuf);
GL13.glActiveTexture(GL13.GL_TEXTURE0);
}
public static ResourceLocation getNSMapLocation(ResourceLocation location, String mapName)
{
String basename = location.getResourcePath();
String[] basenameParts = basename.split(".png");
String basenameNoFileType = basenameParts[0];
return new ResourceLocation(location.getResourceDomain(),basenameNoFileType+"_"+mapName+".png");
}
public static void loadNSMap(IResourceManager manager, ResourceLocation location, int width, int height, int[] aint)
{
if (Shaders.configNormalMap)
ShadersTex.loadNSMap1(manager, getNSMapLocation(location,"n"), width, height, aint, width*height , defNormTexColor);
if (Shaders.configSpecularMap)
ShadersTex.loadNSMap1(manager, getNSMapLocation(location,"s"), width, height, aint, width*height*2, defSpecTexColor);
}
public static void loadNSMap1(IResourceManager manager, ResourceLocation location, int width, int height, int[] aint, int offset, int defaultColor)
{
boolean good = false;
try
{
IResource res = manager.getResource(location);
BufferedImage bufferedimage = ImageIO.read(res.getInputStream());
if (bufferedimage.getWidth()==width && bufferedimage.getHeight()==height)
{
bufferedimage.getRGB(0, 0, width, height, aint, offset, width);
good = true;
}
}
catch (IOException ex)
{
}
if (!good)
{
java.util.Arrays.fill(aint,offset,offset+width*height,defaultColor);
}
}
/** init and upload from BufferedImage */
/* Replacement for TextureUtil.func_110989_a call in SimpleTexture.func_110551_a.
Keep par0...par5 the same as func_110989_a for easy patching.
More parameters added for reading N-S-Map. */
public static int loadSimpleTexture(int textureID,
BufferedImage bufferedimage, boolean linear, boolean clamp,
IResourceManager resourceManager, ResourceLocation location, MultiTexID multiTex)
{
int width = bufferedimage.getWidth();
int height = bufferedimage.getHeight();
int size = width*height;
int[] aint = getIntArray(size*3);
bufferedimage.getRGB(0, 0, width, height, aint, 0, width);
loadNSMap(resourceManager, location, width, height, aint);
setupTexture(multiTex, aint, width, height, linear, clamp);
return textureID;
}
public static void mergeImage(int[] aint, int dstoff, int srcoff, int size)
{
}
public static int blendColor(int color1, int color2, int factor1)
{
int factor2 = 255-factor1;
return
(( (((color1>>>24)&255)*factor1 + ((color2>>>24)&255)*factor2) /255 ) << 24) |
(( (((color1>>>16)&255)*factor1 + ((color2>>>16)&255)*factor2) /255 ) << 16) |
(( (((color1>>> 8)&255)*factor1 + ((color2>>> 8)&255)*factor2) /255 ) << 8) |
(( (((color1>>> 0)&255)*factor1 + ((color2>>> 0)&255)*factor2) /255 ) << 0);
}
public static void loadLayeredTexture(LayeredTexture tex, IResourceManager manager, List list)
{
int width = 0;
int height = 0;
int size = 0;
int[] image = null;
Iterator<String> iterator;
for (iterator = list.iterator(); iterator.hasNext(); )
{
String s = iterator.next();
if (s != null)
{
try
{
ResourceLocation location = new ResourceLocation(s);
InputStream inputstream = manager.getResource(location).getInputStream();
BufferedImage bufimg = ImageIO.read(inputstream);
if (size == 0)
{
width = bufimg.getWidth();
height = bufimg.getHeight();
size = width*height;
image = createAIntImage(size,0x00000000);
}
int[] aint = getIntArray(size * 3);
bufimg.getRGB(0, 0, width, height, aint, 0, width);
loadNSMap(manager, location, width, height, aint);
// merge
for (int i = 0; i < size; ++i)
{
int alpha = (aint[i] >>> 24) & 255;
image[size*0+i] = blendColor(aint[size*0+i], image[size*0+i], alpha);
image[size*1+i] = blendColor(aint[size*1+i], image[size*1+i], alpha);
image[size*2+i] = blendColor(aint[size*2+i], image[size*2+i], alpha);
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
// init and upload
setupTexture(tex.getMultiTexID(), image, width, height, false, false);
}
/* update block texture filter +/- items texture */
static void updateTextureMinMagFilter()
{
TextureManager texman = Minecraft.getMinecraft().getTextureManager();
ITextureObject texObj = texman.getTexture(TextureMap.locationBlocksTexture);
if (texObj != null)
{
MultiTexID multiTex = texObj.getMultiTexID();
// base texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.base);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, Shaders.texMinFilValue[Shaders.configTexMinFilB]);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, Shaders.texMagFilValue[Shaders.configTexMagFilB]);
// norm texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.norm);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, Shaders.texMinFilValue[Shaders.configTexMinFilN]);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, Shaders.texMagFilValue[Shaders.configTexMagFilN]);
// spec texture
GL11.glBindTexture(GL11.GL_TEXTURE_2D, multiTex.spec);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, Shaders.texMinFilValue[Shaders.configTexMinFilS]);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, Shaders.texMagFilValue[Shaders.configTexMagFilS]);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
}
}
static IResourceManager resManager = null;
static ResourceLocation resLocation = null;
static int imageSize = 0;
public static IResource loadResource(IResourceManager manager, ResourceLocation location) throws IOException
{
resManager = manager;
resLocation = location;
return manager.getResource(location);
}
public static int[] loadAtlasSprite(BufferedImage bufferedimage, int startX, int startY, int w, int h, int[] aint, int offset, int scansize)
{
imageSize = w*h;
bufferedimage.getRGB(startX, startY, w, h, aint, offset, scansize);
loadNSMap(resManager, resLocation, w, h, aint);
return aint;
}
public static int[] extractFrame(int[] src, int width, int height, int frameIndex)
{
int srcSize = imageSize;
int frameSize = width * height;
int[] dst = new int[frameSize * 3];
int srcPos = frameSize * frameIndex;
int dstPos = 0;
System.arraycopy(src, srcPos, dst, dstPos, frameSize);
srcPos += srcSize; dstPos += frameSize;
System.arraycopy(src, srcPos, dst, dstPos, frameSize);
srcPos += srcSize; dstPos += frameSize;
System.arraycopy(src, srcPos, dst, dstPos, frameSize);
return dst;
}
public static void fixTransparentColor(TextureAtlasSprite tas, int[] aint) {
}
}
@@ -1,57 +0,0 @@
package shadersmodcore.loading;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minecraft.launchwrapper.ITweaker;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.launchwrapper.LaunchClassLoader;
public class SMCTweaker implements ITweaker {
public List<String> args;
public File gameDir;
public File assetsDir;
public String version;
@Override
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String version) {
this.args = args;
this.gameDir = gameDir;
this.assetsDir = assetsDir;
this.version = version;
}
@Override
public void injectIntoClassLoader(LaunchClassLoader launchClassLoader) {
launchClassLoader.addTransformerExclusion("shadersmodcore.loading.");
launchClassLoader.addTransformerExclusion("shadersmodcore.transform.");
launchClassLoader.registerTransformer("shadersmodcore.transform.SMCClassTransformer");
}
@Override
public String[] getLaunchArguments() {
ArrayList argumentList = (ArrayList)Launch.blackboard.get("ArgumentList");
if (argumentList.isEmpty()) {
List<String> argsList = new ArrayList();
if (gameDir != null) {
argumentList.add("--gameDir");
argumentList.add(gameDir.getPath());
}
if (assetsDir != null) {
argumentList.add("--assetsDir");
argumentList.add(assetsDir.getPath());
}
argumentList.add("--version");
argumentList.add(version);
argumentList.addAll(args);
}
return new String[0];
}
@Override
public String getLaunchTarget() {
return "net.minecraft.client.main.Main";
}
}
@@ -1,8 +0,0 @@
package shadersmodcore.transform;
public class InitNames {
public static void init()
{
new NamerSrg().setNames();
}
}
-43
View File
@@ -1,43 +0,0 @@
package shadersmodcore.transform;
import java.util.ArrayList;
import shadersmodcore.transform.Names.Clas;
import shadersmodcore.transform.Names.Fiel;
import shadersmodcore.transform.Names.Meth;
public class Namer {
ArrayList<Clas> ac = new ArrayList();
ArrayList<Fiel> af = new ArrayList();
ArrayList<Meth> am = new ArrayList();
Clas c(String name) {
Clas x = new Clas(name);
if (ac!=null) ac.add(x);
return x;
}
Fiel f(Clas clas, String name, String desc) {
Fiel x = new Fiel(clas, name, desc);
if (af!=null) af.add(x);
return x;
}
Fiel f(Clas clas, Fiel fiel) {
Fiel x = new Fiel(clas, fiel.name, fiel.desc);
if (af!=null) af.add(x);
return x;
}
Meth m(Clas clas, String name, String desc) {
Meth x = new Meth(clas, name, desc);
if (am!=null) am.add(x);
return x;
}
Meth m(Clas clas, Meth meth) {
Meth x = new Meth(clas, meth.name, meth.desc);
if (am!=null) am.add(x);
return x;
}
public void setNames() {
}
}
-205
View File
@@ -1,205 +0,0 @@
package shadersmodcore.transform;
import static shadersmodcore.transform.Names.*;
public class NamerSrg extends Namer {
public void setNames() {
setNamesSrg();
}
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");
guiOptions_actionPerformed = m(guiOptions_ ,"func_146284_a","("+guiButton_.desc+")V");
guiOptions_initGui = m(guiOptions_ ,"func_73866_w_","()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");
minecraft_startGame = m(minecraft_ ,"func_71384_a" ,"()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");
renderBlocks_renderPistonExtension = m(renderBlocks_ ,"func_147809_c","("+block_.desc+"IIIZ)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);
}
}
-256
View File
@@ -1,256 +0,0 @@
package shadersmodcore.transform;
public class Names {
public static class Name {
String clas;
String name;
String desc;
public Name(String clas, String name, String desc) {
this.clas = clas;
this.name = name;
this.desc = desc;
}
public Name set(String clas, String name, String desc) {
this.clas = clas;
this.name = name;
this.desc = desc;
return this;
}
public boolean equals(String clas, String name, String desc) {
return this.clas.equals(clas) && this.name.equals(name) && this.desc.equals(desc);
}
}
public static class Type extends Name {
public Type(String desc) {
super("","",desc);
}
public Type(String name, String desc) {
super(name,name,desc);
}
}
public static class Clas extends Type {
public Clas(String name) {
super(name,"L"+name+";");
}
public boolean equals(String clas) {
return this.clas.equals(clas);
}
}
public static class Fiel extends Name {
public Fiel(Clas clas, String name, String desc) {
super(clas.clas,name,desc);
}
public boolean equals(String clas, String name) {
return this.clas.equals(clas) && this.name.equals(name);
}
}
public static class Meth extends Name {
public Meth(Clas clas, String name, String desc) {
super(clas.clas,name,desc);
}
public boolean equalsNameDesc(String name, String desc) {
return this.name.equals(name) && this.desc.equals(desc);
}
}
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 guiOptions_actionPerformed;
static Meth guiOptions_initGui;
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 minecraft_startGame;
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 renderBlocks_renderPistonExtension;
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,76 +0,0 @@
package shadersmodcore.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 SMCCTBlock implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
if (Names.block_getAoLight.equalsNameDesc(name, desc))
{
//SMCLog.info(" patching");
return new MVgetAoLight(cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVgetAoLight extends MethodVisitor
{
public MVgetAoLight(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof Float)
{
if (((Float)cst).floatValue() == 0.2f)
{
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", "blockAoLight", "F");
SMCLog.info(" blockAoLight");
return;
}
}
mv.visitLdcInsn(cst);
}
}
}
@@ -1,636 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.util.Textifier;
import org.objectweb.asm.util.TraceMethodVisitor;
import net.minecraft.launchwrapper.IClassTransformer;
import shadersmodcore.transform.SMCLog;
/** transformer for net.minecraft.client.renderer.EntityRenderer */
public class SMCCTEntityRenderer implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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))
{
SMCLog.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))
{
SMCLog.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))
{
SMCLog.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))
{
SMCLog.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))
{
SMCLog.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))
{
SMCLog.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))
{
SMCLog.finer(" patch method %s.%s%s",classname,name,desc);
access = access & (~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC;
return new MVrenderHand(cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (Names.entityRenderer_renderWorld.equalsNameDesc(name,desc))
{
SMCLog.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, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/client/Shaders", "shouldRenderClouds", "("+Names.gameSettings_.desc+")Z");
return;
} else
if (Names.renderGlobal_renderClouds.equals(owner,name,desc)) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginClouds", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endClouds", "()V");
return;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
private static class MVrenderHand extends MethodVisitor
{
Label la1, la2;
public MVrenderHand(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
la1 = new Label();
la2 = new Label();
}
@Override
public void visitMethodInsn(int opcode, String owner, String name,
String desc) {
if (Names.equals("org/lwjgl/util/glu/Project","gluPerspective","(FFFF)V",owner,name,desc)) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "applyHandDepth", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
return;
} else
if (Names.equals("org/lwjgl/opengl/GL11","glPushMatrix","()V",owner,name,desc)) {
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", "isHandRendered", "Z");
mv.visitJumpInsn(IFNE, la1);
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.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", "isCompositeRendered", "Z");
mv.visitJumpInsn(IFNE, la2);
mv.visitInsn(RETURN);
mv.visitLabel(la2);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(FLOAD, 1);
mv.visitInsn(F2D);
mv.visitMethodInsn(INVOKEVIRTUAL, Names.entityRenderer_disableLightmap.clas, Names.entityRenderer_disableLightmap.name, Names.entityRenderer_disableLightmap.desc);
return;
} else if (Names.itemRenderer_renderItemInFirstPerson.equals(owner, name, desc)) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersRender", "renderItemFP", "("+Names.itemRenderer_.desc+"F)V");
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, "shadersmodcore/client/Shaders", "beginRender", "("+Names.minecraft_.desc+"FJ)V");
}
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof String) {
String scst = (String)cst;
//SMCLog.finest(" %d Ldc %s", state, scst);
section = scst;
}
mv.visitLdcInsn(cst);
}
@Override
public void visitIntInsn(int opcode, int operand) {
//SMCLog.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) {
//SMCLog.finest(" %d, Jump %d", state, opcode);
switch (state) {
case 4:
if (opcode==IF_ICMPLT) {
++state;
mv.visitInsn(POP2);
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/client/Shaders", "isShadowPass", "Z");
mv.visitJumpInsn(IFNE, label);
// mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "readCenterDepth", "()V");
// mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "endHand", "()V");
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(FLOAD, 1);
mv.visitVarInsn(ILOAD, 13);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersRender", "renderHand1", "("+Names.entityRenderer_.desc+"FI)V");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/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) {
//SMCLog.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, "shadersmodcore/client/Shaders", "endRender", "()V");
return;
}
}
mv.visitFrame(type, nLocal, local, nStack, stack);
}
@Override
public void visitFieldInsn(int opcode, String owner, String name,
String desc) {
//SMCLog.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) {
//SMCLog.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, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/client/Shaders", "setCamera", "(F)V");
return;
}
break;
case 3:
if (Names.equals("Config","isSkyEnabled","()Z",owner,name,desc)) {
state = 6;
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "beginSky", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endSky", "()V");
return;
}
break;
case 6:
if (Names.renderGlobal_renderSky.equals(owner,name,desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginSky", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/ShadersRender", "setFrustrumPosition", "("+Names.frustrum_.desc+"DDD)V");
return;
}
break;
case 9:
if (Names.renderGlobal_clipRenderersByFrustum.equals(owner,name,desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "beginTerrain", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/client/Shaders", "beginParticles", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "beginWeather", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/ShadersRender", "renderHand0", "("+Names.entityRenderer_.desc+"FI)V");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "preWater", "()V");
return;
}
case 18:
case 19:
case 20:
if (Names.renderGlobal_sortAndRender.equals(owner,name,desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginWater", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endWater", "()V");
return;
} else if (Names.equals(Names.renderGlobal_.clas,"renderAllSortedRenderers","(ID)I",owner,name,desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginWater", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "disableFog", "()V");
return;
}
break;
case 24:
if (Names.effectRenderer_renderLitParticles.equals(owner,name,desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "beginParticles", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endParticles", "()V");
return;
}
break;
case 30:
if (Names.entityRenderer_renderHand.equals(owner,name,desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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)
SMCLog.severe(" state %d expect %d",state,stateEnd);
mv.visitEnd();
}
}
}
@@ -1,169 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTGuiOptions implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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) {
this.classname = name;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.guiOptions_initGui.equalsNameDesc(name, desc))
{
//SMCLog.info(" patching");
return new MVinitGui(
cv.visitMethod(access, name, desc, signature, exceptions));
}
if (Names.guiOptions_actionPerformed.equalsNameDesc(name, desc))
{
//SMCLog.info(" patching");
return new MVactionPerformed(
cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVinitGui extends MethodVisitor
{
int state = 0;
public MVinitGui(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitInsn(int opcode) {
super.visitInsn(opcode);
if (opcode == Opcodes.POP){
if (state == 1) {
state = 2;
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.guiOptions_buttonList.clas, Names.guiOptions_buttonList.name, Names.guiOptions_buttonList.desc);
mv.visitTypeInsn(NEW, Names.guiButton_.clas);
mv.visitInsn(DUP);
mv.visitIntInsn(SIPUSH, 190);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.guiOptions_width.clas, Names.guiOptions_width.name, Names.guiOptions_width.desc);
mv.visitInsn(ICONST_2);
mv.visitInsn(IDIV);
mv.visitIntInsn(SIPUSH, 155);
mv.visitInsn(ISUB);
mv.visitIntInsn(BIPUSH, 76);
mv.visitInsn(IADD);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.guiOptions_height.clas, Names.guiOptions_height.name, Names.guiOptions_height.desc);
mv.visitIntInsn(BIPUSH, 6);
mv.visitInsn(IDIV);
mv.visitIntInsn(BIPUSH, 120);
mv.visitInsn(IADD);
mv.visitIntInsn(BIPUSH, 6);
mv.visitInsn(ISUB);
mv.visitIntInsn(BIPUSH, 74);
mv.visitIntInsn(BIPUSH, 20);
mv.visitLdcInsn("Shaders...");
mv.visitMethodInsn(INVOKESPECIAL, Names.guiButton_.clas, "<init>", "(IIIIILjava/lang/String;)V");
mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z");
mv.visitInsn(POP);
SMCLog.finest(" add shaders button");
}
}
}
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof String)
{
if (((String)cst).equals("options.language"))
{
if (state == 0) {
state = 1;
mv.visitInsn(POP);
mv.visitInsn(POP);
mv.visitIntInsn(BIPUSH, 74);
mv.visitIntInsn(BIPUSH, 20);
SMCLog.finest(" decrease language button size");
}
}
}
super.visitLdcInsn(cst);
}
}
private static class MVactionPerformed extends MethodVisitor
{
public MVactionPerformed(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitCode() {
super.visitCode();
mv.visitVarInsn(ALOAD, 1);
mv.visitFieldInsn(GETFIELD, Names.guiButton_id.clas, Names.guiButton_id.name, Names.guiButton_id.desc);
mv.visitIntInsn(SIPUSH, 190);
Label l1 = new Label();
mv.visitJumpInsn(IF_ICMPNE, l1);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.guiOptions_mc.clas, Names.guiOptions_mc.name, Names.guiOptions_mc.desc);
mv.visitFieldInsn(GETFIELD, Names.minecraft_gameSettings.clas, Names.minecraft_gameSettings.name, Names.minecraft_gameSettings.desc);
mv.visitMethodInsn(INVOKEVIRTUAL, Names.gameSettings_saveOptions.clas, Names.gameSettings_saveOptions.name, Names.gameSettings_saveOptions.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.guiOptions_mc.clas, Names.guiOptions_mc.name, Names.guiOptions_mc.desc);
mv.visitTypeInsn(NEW, "shadersmodcore/client/GuiShaders");
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.guiOptions_options.clas, Names.guiOptions_options.name, Names.guiOptions_options.desc);
mv.visitMethodInsn(INVOKESPECIAL, "shadersmodcore/client/GuiShaders", "<init>", "("+Names.guiScreen_.desc+Names.gameSettings_.desc+")V");
mv.visitMethodInsn(INVOKEVIRTUAL, Names.minecraft_displayGuiScreen.clas, Names.minecraft_displayGuiScreen.name, Names.minecraft_displayGuiScreen.desc);
mv.visitLabel(l1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
SMCLog.finest(" shaders button action");
}
}
}
@@ -1,50 +0,0 @@
package shadersmodcore.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;
public class SMCCTItemBlock implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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.itemBlock_block.name.equals(name)) {
access = access & ~(ACC_PUBLIC|ACC_PRIVATE|ACC_PROTECTED) | ACC_PUBLIC;
}
return cv.visitField(access, name, desc, signature, value);
}
}
}
@@ -1,118 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
import org.lwjgl.opengl.GL11;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTItemRenderer implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s",classname,name,desc);
if (Names.itemRenderer_updateEquipped.equalsNameDesc(name, desc))
{
SMCLog.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))
{
SMCLog.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))
{
SMCLog.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, "shadersmodcore/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,99 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTMinecraft implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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) {
this.classname = name;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.minecraft_startGame.equalsNameDesc(name, desc))
{
//SMCLog.info(" patching");
return new MVstartGame(super.visitMethod(access, name, desc, signature, exceptions));
}
return super.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVstartGame extends MethodVisitor
{
int state = 0;
public MVstartGame(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof String)
{
if (((String)cst).equals("Startup"))
{
if (state == 0) {
state = 1;
}
}
}
super.visitLdcInsn(cst);
}
@Override
public void visitVarInsn(int opcode, int var) {
if (opcode == Opcodes.ALOAD) {
if (var == 0) {
if (state == 1) {
state = 2;
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "startup", "("+Names.minecraft_.desc+")V");
//SMCLog.finest(" startup");
}
}
}
super.visitVarInsn(opcode, var);
}
}
}
@@ -1,134 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
import java.util.ListIterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTModelRenderer implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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.modelRenderer_compiled.name.equals(name) ||
// Names.modelRenderer_displayList.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
// if (Names.modelRenderer_render.equalsNameDesc(name, desc))
// {
// //SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
// return new MVrender(
// cv.visitMethod(access, name, desc, signature, exceptions));
// }
// else
// if (Names.modelRenderer_renderWithRotation.equalsNameDesc(name, desc))
// {
// //SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
// return new MVrender(
// cv.visitMethod(access, name, desc, signature, exceptions));
// }
// else
if ("resetDisplayList".equals(name) && "()V".equals(desc)
|| "getCompiled".equals(name) && "()Z".equals(desc)
|| "getDisplayList".equals(name) && "()I".equals(desc)
) {
return null;
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
@Override
public void visitEnd() {
MethodVisitor mv;
{
mv = cv.visitMethod(ACC_PUBLIC, "getCompiled", "()Z", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.modelRenderer_compiled.clas, Names.modelRenderer_compiled.name, Names.modelRenderer_compiled.desc);
mv.visitInsn(IRETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cv.visitMethod(ACC_PUBLIC, "getDisplayList", "()I", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.modelRenderer_displayList.clas, Names.modelRenderer_displayList.name, Names.modelRenderer_displayList.desc);
mv.visitInsn(IRETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cv.visitMethod(ACC_PUBLIC, "resetDisplayList", "()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.modelRenderer_compiled.clas, Names.modelRenderer_compiled.name, Names.modelRenderer_compiled.desc);
Label l1 = new Label();
mv.visitJumpInsn(IFEQ, l1);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.modelRenderer_displayList.clas, Names.modelRenderer_displayList.name, Names.modelRenderer_displayList.desc);
mv.visitMethodInsn(INVOKESTATIC, Names.glAllocation_deleteDisplayLists.clas, Names.glAllocation_deleteDisplayLists.name, Names.glAllocation_deleteDisplayLists.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(ICONST_0);
mv.visitFieldInsn(PUTFIELD, Names.modelRenderer_displayList.clas, Names.modelRenderer_displayList.name, Names.modelRenderer_displayList.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(ICONST_0);
mv.visitFieldInsn(PUTFIELD, Names.modelRenderer_compiled.clas, Names.modelRenderer_compiled.name, Names.modelRenderer_compiled.desc);
mv.visitLabel(l1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitInsn(RETURN);
mv.visitMaxs(2, 1);
mv.visitEnd();
}
super.visitEnd();
}
}
}
@@ -1,96 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTOpenGlHelper implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.info(" class %s",name);
cv.visit(version, access, name, signature, superName, interfaces);
}
//boolean has_activeTexUnit = false;
// @Override
// public FieldVisitor visitField(int access, String name, String desc,
// String signature, Object value) {
// //if (name.equals("activeTexUnit")) {
// // has_activeTexUnit = true;
// //}
// return cv.visitField(access, name, desc, signature, value);
// }
@Override
public MethodVisitor visitMethod(int access, String name, String desc,
String signature, String[] exceptions)
{
//if (!has_activeTexUnit) {
// has_activeTexUnit = true;
// FieldVisitor fv = cv.visitField(ACC_PUBLIC + ACC_STATIC, "activeTexUnit", "I", null, null);
// fv.visitEnd();
// SMCLog.finest(" add field activeTexUnit");
//}
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.openGlHelper_setActiveTexture.equalsNameDesc(name, desc))
{
//SMCLog.info(" patching");
return new MVsetActiveTexture(cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVsetActiveTexture extends MethodVisitor
{
public MVsetActiveTexture(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitCode() {
mv.visitCode();
mv.visitVarInsn(ILOAD, 0);
mv.visitFieldInsn(PUTSTATIC, "shadersmodcore/client/Shaders", "activeTexUnit", "I");
SMCLog.finest(" set activeTexUnit");
}
}
}
@@ -1,96 +0,0 @@
package shadersmodcore.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 SMCCTPrjRedIlluRenderHalo implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" %s%s",name,desc);
if ("prepareRenderState".equals(name) && "()V".equals(desc))
{
SMCLog.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))
{
SMCLog.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)) {
SMCLog.info(" beginHalo");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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)) {
SMCLog.info(" endHalo");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endProjectRedHalo", "()V");
}
}
}
}
@@ -1,82 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTRender implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.render_renderShadow.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVrenderShadow(cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVrenderShadow extends MethodVisitor
{
//protected MethodVisitor mv;
public MVrenderShadow(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
//this.mv = mv;
}
@Override
public void visitCode() {
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", "shouldSkipDefaultShadow", "Z");
Label l1 = new Label();
mv.visitJumpInsn(IFEQ, l1);
mv.visitInsn(RETURN);
mv.visitLabel(l1);
SMCLog.finer(" conditionally skip default shadow");
}
}
}
@@ -1,388 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
import java.util.ListIterator;
import org.lwjgl.opengl.GL12;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.InsnList;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTRenderBlocks implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.renderBlocks_renderBlockByRenderType.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
return new MVrenBlkByRenType(
cv.visitMethod(access, name, desc, signature, exceptions));
}
else
if (Names.renderBlocks_renderBlockFlowerPot.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
return new MVrenBlkFlowerPot(
cv.visitMethod(access, name, desc, signature, exceptions));
}
else
if (Names.renderBlocks_renderStdBlockWithAOP.equalsNameDesc(name, desc) ||
Names.renderBlocks_renderStdBlockWithAO.equalsNameDesc(name, desc)
)
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
return new MVrenBlkWithAO(access, name, desc, signature, exceptions,
cv.visitMethod(access, name, desc, signature, exceptions));
}
else
if (Names.renderBlocks_renderStdBlockWithCM.equalsNameDesc(name, desc) ||
Names.renderBlocks_renderBlockCactusImpl.equalsNameDesc(name, desc) ||
Names.renderBlocks_renderBlockBed.equalsNameDesc(name, desc) ||
Names.renderBlocks_renderBlockFluids.equalsNameDesc(name, desc) ||
Names.renderBlocks_renderBlockDoor.equalsNameDesc(name, desc) ||
Names.renderBlocks_renderBlockSandFalling.equalsNameDesc(name, desc)
)
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
return new MVrenBlkFVar(
cv.visitMethod(access, name, desc, signature, exceptions));
}
else
if (Names.renderBlocks_renderPistonExtension.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,remappedName);
return new MVrenBlkPistonExt(
cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVrenBlkByRenType extends MethodVisitor
{
public MVrenBlkByRenType(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
int nPatch = 0;
@Override
public void visitCode() {
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ILOAD, 2);
mv.visitVarInsn(ILOAD, 3);
mv.visitVarInsn(ILOAD, 4);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "pushEntity", "("+Names.renderBlocks_.desc+Names.block_.desc+"III)V");
//SMCLog.info(" pushEntity");
++nPatch;
}
@Override
public void visitInsn(int opcode) {
if (opcode==Opcodes.IRETURN) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "popEntity", "()V");
//SMCLog.info(" popEntity");
++nPatch;
}
mv.visitInsn(opcode);
}
@Override
public void visitEnd() {
mv.visitEnd();
//SMCLog.info(" %d", nPatch);
}
}
private static class MVrenBlkFlowerPot extends MethodVisitor
{
public MVrenBlkFlowerPot(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
int nPatch = 0;
int state = 0;
@Override
public void visitVarInsn(int opcode, int var) {
super.visitVarInsn(opcode, var);
if (state==1) {
++state;
mv.visitVarInsn(ALOAD, var);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "pushEntity", "("+Names.block_.desc+")V");
}
}
@Override
public void visitMethodInsn(int opcode, String owner, String name,
String desc) {
super.visitMethodInsn(opcode, owner, name, desc);
switch (state) {
case 0:
if (Names.block_getBlockFromItem.equals(owner, name, desc)) {
++state;
}
break;
case 2:
if (Names.tessellator_addTranslation.equals(owner, name, desc)) {
++state;
}
break;
case 3:
if (Names.tessellator_addTranslation.equals(owner, name, desc)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "popEntity", "()V");
}
break;
}
}
@Override
public void visitCode() {
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ILOAD, 2);
mv.visitVarInsn(ILOAD, 3);
mv.visitVarInsn(ILOAD, 4);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "pushEntity", "("+Names.renderBlocks_.desc+Names.block_.desc+"III)V");
//SMCLog.info(" pushEntity");
++nPatch;
}
@Override
public void visitInsn(int opcode) {
if (opcode==Opcodes.IRETURN) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "popEntity", "()V");
//SMCLog.info(" popEntity");
++nPatch;
}
mv.visitInsn(opcode);
}
@Override
public void visitEnd() {
mv.visitEnd();
//SMCLog.info(" %d", nPatch);
}
}
static final String[] fieldsBlockLightLevel = {null,"blockLightLevel05","blockLightLevel06","blockLightLevel08"};
private static class MVrenBlkWithAO extends MethodVisitor
{
MethodVisitor mv1;
MethodNode mn;
int nPatch = 0;
public MVrenBlkWithAO(final int access, final String name, final String desc,
final String signature, final String[] exceptions,
MethodVisitor mv) {
super(Opcodes.ASM4);
super.mv = this.mn = new MethodNode(access, name, desc, signature, exceptions);
this.mv1 = mv;
}
@Override
public void visitEnd() {
mn.visitEnd();
mn.accept(mv1);
//SMCLog.info(" %d", nPatch);
}
@Override
public void visitLdcInsn(Object cst) {
int match1 = 0;
if (cst instanceof Float) {
float fcst = ((Float)cst).floatValue();
if (fcst == 0.5f) match1 = 1;
else if (fcst == 0.6f) match1 = 2;
else if (fcst == 0.8f) match1 = 3;
}
if (match1 != 0) {
int match2 = 0;
InsnList insns = mn.instructions;
AbstractInsnNode insn = insns.getLast();
if (insn!=null && insn.getOpcode()==Opcodes.FLOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
match2 = match1;
}
}
}
}
}
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
insn=insn.getPrevious();
if (insn!=null && insn.getOpcode()==Opcodes.ALOAD) {
match2 = match1;
}
}
}
}
if (match2 != 0) {
String fieldName = fieldsBlockLightLevel[match2];
mn.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", fieldName, "F");
//SMCLog.info(" %s", fieldName);
++nPatch;
return;
}
}
mn.visitLdcInsn(cst);
}
}
private static class MVrenBlkFVar extends MethodVisitor
{
int nPatch = 0;
public MVrenBlkFVar(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
int state = 0;
@Override
public void visitLdcInsn(Object cst) {
int match1 = 0;
if (cst instanceof Float) {
float fcst = ((Float)cst).floatValue();
if (fcst == 0.5f) match1 = 1;
else if (fcst == 0.6f) match1 = 2;
else if (fcst == 0.8f) match1 = 3;
}
if (match1 != 0 && state < 3) {
++state;
String fieldName = fieldsBlockLightLevel[match1];
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", fieldName, "F");
//SMCLog.info(" %s", fieldName);
++nPatch;
return;
}
mv.visitLdcInsn(cst);
}
@Override
public void visitEnd() {
mv.visitEnd();
//SMCLog.info(" %d", nPatch);
}
}
private static class MVrenBlkPistonExt extends MethodVisitor
{
int nPatch = 0;
public MVrenBlkPistonExt(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
int state = 0;
@Override
public void visitTableSwitchInsn(int min, int max, Label dflt,
Label... labels) {
state = 1;
mv.visitTableSwitchInsn(min, max, dflt, labels);
}
@Override
public void visitLdcInsn(Object cst) {
int match1 = 0;
if (cst instanceof Float) {
float fcst = ((Float)cst).floatValue();
if (fcst == 0.5f) match1 = 1;
else if (fcst == 0.6f) match1 = 2;
else if (fcst == 0.8f) match1 = 3;
}
if (match1 != 0 && state == 1) {
String fieldName = fieldsBlockLightLevel[match1];
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/client/Shaders", fieldName, "F");
//SMCLog.info(" %s", fieldName);
++nPatch;
return;
}
mv.visitLdcInsn(cst);
}
@Override
public void visitEnd() {
mv.visitEnd();
//SMCLog.info(" %d", nPatch);
}
}
// 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);
// }
// }
}
@@ -1,354 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
import org.lwjgl.opengl.GL11;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTRenderGlobal implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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.renderGlobal_worldRenderers.name.equals(name)) {
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)
{
//String remappedName = SMCRemap.remapper.mapMethodName(classname, name, desc);
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.renderGlobal_renderEntities.equalsNameDesc(name, desc))
{
SMCLog.finer(" patch method %s.%s%s",classname,name,desc);
return new MVrenderEntities(cv.visitMethod(access, name, desc, signature, exceptions));
}
else if (Names.renderGlobal_sortAndRender.equalsNameDesc(name, desc))
{
SMCLog.finer(" patch method %s.%s%s",classname,name,desc);
return new MVendisTexFog(cv.visitMethod(access, name, desc, signature, exceptions));
}
else if (Names.renderGlobal_renderSky.equalsNameDesc(name, desc))
{
SMCLog.finer(" patch method %s.%s%s",classname,name,desc);
return new MVrenderSky(cv.visitMethod(access, name, desc, signature, exceptions));
}
else if (Names.renderGlobal_drawBlockDamageTexture.equalsNameDesc(name, desc)
|| name.equals("drawBlockDamageTexture") ) // Optifine
{
SMCLog.finer(" patch method %s.%s%s",classname,name,desc);
return new MVdrawBlockDamageTexture(cv.visitMethod(access, name, desc, signature, exceptions));
}
else if (Names.renderGlobal_drawSelectionBox.equalsNameDesc(name, desc))
{
SMCLog.finer(" patch method %s.%s%s",classname,name,desc);
return new MVendisTexFog(cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVrenderEntities extends MethodVisitor
{
public MVrenderEntities(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
int state = 0;
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof String) {
String scst = (String)cst;
if (scst.equals("entities")) {
state = 1;
}
else if (scst.equals("blockentities")) {
state = 4;
}
}
mv.visitLdcInsn(cst);
}
@Override
public void visitFieldInsn(int opcode, String owner, String name,
String desc) {
if (state==2) {
if (Names.renderManager_instance.equals(owner, name, desc)) {
state = 3;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "nextEntity", "()V");
}
}
mv.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
mv.visitMethodInsn(opcode, owner, name, desc);
if (state == 1) {
state = 2;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginEntities", "()V");
SMCLog.finest(" %s","beginEntities");
} else if (state == 4) {
state = 5;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endEntities", "()V");
SMCLog.finest(" %s","endEntities");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginBlockEntities", "()V");
SMCLog.finest(" %s","beginTileEntities");
} else if (state == 5) {
if (Names.entityRenderer_disableLightmap.equals(owner, name, desc)) {
state = 6;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endBlockEntities", "()V");
SMCLog.finest(" %s","endTileEntities");
}
}
}
}
/* detect glEnable or glDisable (TEXTURE_2D or FOG) */
private static class MVendisTexFog extends MethodVisitor
{
public MVendisTexFog(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
int lastInt = 0;
@Override
public void visitIntInsn(int opcode, int operand) {
mv.visitIntInsn(opcode, operand);
if (opcode == SIPUSH && (operand==3553 || operand==2912)) {
lastInt = operand;
}
else {
lastInt = 0;
}
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
mv.visitMethodInsn(opcode, owner, name, desc);
if (owner.equals("org/lwjgl/opengl/GL11")) {
if (name.equals("glEnable")) {
if (lastInt==GL11.GL_TEXTURE_2D) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "enableTexture2D", "()V");
SMCLog.finest(" %s","enableTexture2D");
} else if (lastInt==GL11.GL_FOG) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "enableFog", "()V");
SMCLog.finest(" %s","enableFog");
}
} else if (name.equals("glDisable")) {
if (lastInt==GL11.GL_TEXTURE_2D) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "disableTexture2D", "()V");
SMCLog.finest(" %s","disableTexture2D");
} else if (lastInt==GL11.GL_FOG) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "disableFog", "()V");
SMCLog.finest(" %s","disableFog");
}
}
}
lastInt = 0;
}
}
/* extends MVenableTF */
private static class MVrenderSky extends MVendisTexFog
{
public MVrenderSky(MethodVisitor mv) {
super(mv);
}
int state = 0;
boolean detectedOptifine = false;
int lastInt = 0;
int lastVar = 0;
@Override
public void visitIntInsn(int opcode, int operand) {
mv.visitIntInsn(opcode, operand);
if (opcode == SIPUSH) {
lastInt = operand;
} else {
lastInt = 0;
}
}
@Override
public void visitVarInsn(int opcode, int var) {
mv.visitVarInsn(opcode, var);
if (opcode == ALOAD) {
lastVar = var;
} else {
lastVar = 0;
}
}
@Override
public void visitFieldInsn(int opcode, String owner, String name, String desc) {
switch (state)
{
case 0:
if (Names.vec3_xCoord.equals(owner, name)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "setSkyColor", "("+Names.vec3_.desc+")V");
mv.visitVarInsn(ALOAD, lastVar);
break;
}
break;
case 1:
if (Names.renderGlobal_glSkyList.equals(owner, name)) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "preSkyList", "()V");
break;
}
break;
}
mv.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
//SMCLog.info(" %s.%s%s",ownerM,nameM,descM);
switch (state) {
case 0:
if (owner.equals("Config") && name.equals("isSkyEnabled")) {
detectedOptifine = true;
}
break;
case 2:
if (Names.worldClient_getRainStrength.equals(owner, name, desc)) {
++state;
}
break;
}
//
mv.visitMethodInsn(opcode, owner, name, desc);
//
if (owner.equals("org/lwjgl/opengl/GL11")) {
if (name.equals("glEnable")) {
if (lastInt==GL11.GL_TEXTURE_2D) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "enableTexture2D", "()V");
SMCLog.finest(" %s","enableTexture2D");
} else if (lastInt==GL11.GL_FOG) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "enableFog", "()V");
SMCLog.finest(" %s","enableFog");
}
} else if (name.equals("glDisable")) {
if (lastInt==GL11.GL_TEXTURE_2D) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "disableTexture2D", "()V");
SMCLog.finest(" %s","disableTexture2D");
} else if (lastInt==GL11.GL_FOG) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "disableFog", "()V");
SMCLog.finest(" %s","disableFog");
}
} else if (name.equals("glRotatef")) {
SMCLog.finest(" *%s %d","glRotatef",state);
if (state == 3) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "preCelestialRotate", "()V");
SMCLog.finest(" %s","preCelestialRotate");
} else if (state == 4) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "postCelestialRotate", "()V");
SMCLog.finest(" %s","postCelestialRotate");
}
}
}
}
}
private static class MVdrawBlockDamageTexture extends MethodVisitor
{
int state = 0;
public MVdrawBlockDamageTexture(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitIntInsn(int opcode, int operand) {
switch(state)
{
case 0:
if (opcode==SIPUSH && operand==GL11.GL_ALPHA_TEST) {
++state;
}
break;
case 2:
if (opcode==SIPUSH && operand==GL11.GL_ALPHA_TEST) {
++state;
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endBlockDestroyProgress", "()V");
SMCLog.finest(" %s","endBlockDestroyProgress");
}
break;
}
mv.visitIntInsn(opcode, operand);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
switch(state)
{
case 1:
if (owner.equals("org/lwjgl/opengl/GL11") && name.equals("glEnable")) {
++state;
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginBlockDestroyProgress", "()V");
SMCLog.finest(" %s","beginBlockDestroyProgress");
return;
}
break;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
}
@@ -1,60 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
/** transformer for net.minecraft.client.renderer.Tessellator */
public class SMCCTRenderManager implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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,87 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTRenderSpider implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.renderDragon_shouldRenderPass.equalsNameDesc(name, desc))
{
//SMCLog.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))
{
//SMCLog.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))
{
//SMCLog.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, "shadersmodcore/client/Shaders", "beginSpiderEyes", "()V");
}
}
}
}
@@ -1,290 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
import java.util.ListIterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTRendererLivingEntity implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.rendererLivingE_doRender.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVdoRenderLiving(
cv.visitMethod(access, name, desc, signature, exceptions));
}
else
if (Names.rendererLivingE_renderLabel.equalsNameDesc(name, desc))
{
//SMCLog.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);
}
}
private static class MVdoRenderLiving extends MethodVisitor
{
public MVdoRenderLiving(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitCode() {
//SMCLog.info(" insert code");
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/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, "shadersmodcore/client/Shaders", "setEntityHurtFlash", "(II)V");
mv.visitLabel(label1);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
//SMCLog.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);
}
@Override
public void visitLdcInsn(Object cst) {
if (cst instanceof Integer)
{
int icst = ((Integer)cst).intValue();
if (icst == GL12.GL_RESCALE_NORMAL) {
//SMCLog.info(" rescale_normal");
if (labelEndVH != null) {
//SMCLog.info(" jump target");
mv.visitLabel(labelEndVH);
labelEndVH = null;
}
}
}
mv.visitLdcInsn(cst);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name,
String desc) {
//SMCLog.info(" %s.%s%s",ownerM,nameM,descM);
if (opcode==INVOKEVIRTUAL) {
if (Names.rendererLivingE_renderEquippedItems.equals(owner, name, desc)) {
//SMCLog.info(" renderEquippedItems");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "resetEntityHurtFlash", "()V");
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitFieldInsn(GETSTATIC, "shadersmodcore/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)) {
//SMCLog.info(" glDepthFunc");
if (state==3) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "beginLivingDamage", "()V");
++state;
} else if (state==4) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "endLivingDamage", "()V");
++state;
}
} else if (Names.openGlHelper_setActiveTexture.equals(owner,name,desc)) {
//SMCLog.info(" setActiveTexture");
if (state==1) {
++state;
} else if (state==2) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "disableLightmap", "()V");
++state;
} else if (state==5) {
++state;
} else if (state==6) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/Shaders", "enableLightmap", "()V");
++state;
}
}
}
}
@Override
public void visitEnd() {
mv.visitEnd();
if (state != stateEnd) {
SMCLog.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 = "shadersmodcore/client/Shaders";
name = "sglDisableT2D";
}
else
if (name.equals("glEnable"))
{
owner = "shadersmodcore/client/Shaders";
name = "sglEnableT2D";
}
}
}
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);
// }
// }
}
@@ -1,83 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
import java.util.ListIterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTSmartMoveModelRotationRenderer implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.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,464 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
/** transformer for net.minecraft.client.renderer.Tessellator */
public class SMCCTTessellator implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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 boolean inputHasStaticBuffer = false;
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;
//SMCLog.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) {
//SMCLog.fine("%x %s %s %s",access,desc,name,nameM);
if ( name.equals("vertexPos") ||
name.equals("normalX") ||
name.equals("normalY") ||
name.equals("normalZ") ||
name.equals("midTextureU") ||
name.equals("midTextureV")
) {
return null;
} else if (((access & ACC_STATIC) != 0) && (
Names.tessellator_byteBuffer.name.equals(name) ||
Names.tessellator_intBuffer.name.equals(name) ||
Names.tessellator_floatBuffer.name.equals(name) ||
Names.tessellator_shortBuffer.name.equals(name) ||
Names.tessellator_vertexCount.name.equals(name)
//nameM.equals(Names.Tessellator_useVBO) ||
//nameM.equals(Names.Tessellator_vertexBuffers)
)) {
inputHasStaticBuffer = true;
//SMCLog.finest(" input has static buffer");
access = access & (~ACC_STATIC & ~ACC_PRIVATE & ~ACC_PROTECTED) | ACC_PUBLIC;
} 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;
fv = cv.visitField(ACC_PUBLIC, "vertexPos", "[F", null, null);
fv.visitEnd();
fv = cv.visitField(ACC_PUBLIC, "normalX", "F", null, null);
fv.visitEnd();
fv = cv.visitField(ACC_PUBLIC, "normalY", "F", null, null);
fv.visitEnd();
fv = cv.visitField(ACC_PUBLIC, "normalZ", "F", null, null);
fv.visitEnd();
fv = cv.visitField(ACC_PUBLIC, "midTextureU", "F", null, null);
fv.visitEnd();
fv = cv.visitField(ACC_PUBLIC, "midTextureV", "F", null, null);
fv.visitEnd();
}
//SMCLog.fine(" method %s.%s%s = %s",classname,name,desc,nameM);
if (name.equals("<clinit>"))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVclinit(cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (name.equals("<init>") && desc.equals("()V"))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVinit(cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (name.equals("<init>") && desc.equals("(I)V"))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVinitI(
cv.visitMethod(access, name, desc, signature, exceptions)
);
} else
if (Names.tessellator_draw.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVdraw(cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (Names.tessellator_reset.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
access = access & ~(ACC_PRIVATE|ACC_PROTECTED) | ACC_PUBLIC;
return new MVreset(cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (Names.tessellator_addVertex.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVaddVertex(cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (Names.tessellator_setNormal.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVsetNormal(
cv.visitMethod(access, name, desc, signature, exceptions));
} else
if (Names.tessellator_sortQuad.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new MVsortQuad(
cv.visitMethod(access, name, desc, signature, exceptions));
} else
{
access = access & ~(ACC_PRIVATE|ACC_PROTECTED) | ACC_PUBLIC;
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
/*private static class MVclinit extends MethodVisitor
{
public MVclinit(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
}
private static class MVinit extends MethodVisitor
{
public MVinit(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitInsn(int opcode) {
if (opcode == RETURN) {
mv.visitVarInsn(ALOAD, 0);
mv.visitIntInsn(BIPUSH, 16);
mv.visitIntInsn(NEWARRAY, T_FLOAT);
mv.visitFieldInsn(PUTFIELD, SMCNames.Tessellator_, "vertexPos", "[F");
}
mv.visitInsn(opcode);
}
}*/
private static class MVclinit extends MethodVisitor
{
public MVclinit(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitFieldInsn(int opcode, String owner, String name,
String desc) {
//SMCLog.finest(" F %d %s.%s %s", opcode, ownerM, nameM, descM);
if (opcode==PUTSTATIC && (
Names.tessellator_byteBuffer.equals(owner, name) ||
Names.tessellator_intBuffer.equals(owner, name) ||
Names.tessellator_floatBuffer.equals(owner, name) ||
Names.tessellator_shortBuffer.equals(owner, name) ||
Names.tessellator_vertexCount.equals(owner, name)
//nameM.equals(Names.Tessellator_useVBO)||
//nameM.equals(Names.Tessellator_vertexBuffers)
))
{
mv.visitInsn(POP);
return;
} else
if (opcode==GETSTATIC && (
Names.tessellator_byteBuffer.equals(owner, name)
//nameM.equals(Names.Tessellator_vertexBuffers)
))
{
mv.visitInsn(ACONST_NULL);
return;
//} else
//if (opcode==GETSTATIC && (
// nameM.equals(Names.Tessellator_useVBO)
// ))
//{
// mv.visitInsn(ICONST_0);
// return;
}
mv.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name,
String desc) {
//SMCLog.finest(" M %d %s.%s %s", opcode, ownerM, nameM, descM);
if (Names.glAllocation_createDirectByteBuffer.equals(owner, name, desc)) {
mv.visitInsn(POP);
mv.visitInsn(ACONST_NULL);
return;
} else if (Names.glAllocation_createDirectIntBuffer.equals(owner, name, desc)) {
mv.visitInsn(POP);
mv.visitInsn(ACONST_NULL);
return;
} else if (Names.equals("java/nio/ByteBuffer","asIntBuffer","()Ljava/nio/IntBuffer;",owner,name,desc) ) {
mv.visitInsn(POP);
mv.visitInsn(ACONST_NULL);
return;
} else if (Names.equals("java/nio/ByteBuffer","asFloatBuffer","()Ljava/nio/FloatBuffer;",owner,name,desc) ) {
mv.visitInsn(POP);
mv.visitInsn(ACONST_NULL);
return;
} else if (Names.equals("java/nio/ByteBuffer","asShortBuffer","()Ljava/nio/ShortBuffer;",owner,name,desc) ) {
mv.visitInsn(POP);
mv.visitInsn(ACONST_NULL);
return;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
private static class MVinit extends MethodVisitor
{
public MVinit(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
if (opcode==INVOKESPECIAL
&& Names.equals("java/lang/Object","<init>","()V",owner, name, desc) )
{
mv.visitLdcInsn(new Integer(65536));
mv.visitMethodInsn(INVOKESPECIAL, Names.tessellator_.clas, "<init>", "(I)V");
return;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
private static class MVinitI extends MethodVisitor
{
public MVinitI(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitInsn(int opcode) {
if (opcode == RETURN) {
if (inputHasStaticBuffer) {
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ILOAD, 1);
mv.visitInsn(ICONST_4);
mv.visitInsn(IMUL);
mv.visitMethodInsn(INVOKESTATIC, Names.glAllocation_createDirectByteBuffer.clas, Names.glAllocation_createDirectByteBuffer.name, Names.glAllocation_createDirectByteBuffer.desc);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_byteBuffer.clas, Names.tessellator_byteBuffer.name, Names.tessellator_byteBuffer.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.tessellator_byteBuffer.clas, Names.tessellator_byteBuffer.name, Names.tessellator_byteBuffer.desc);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/nio/ByteBuffer", "asIntBuffer", "()Ljava/nio/IntBuffer;");
mv.visitFieldInsn(PUTFIELD, Names.tessellator_intBuffer.clas, Names.tessellator_intBuffer.name, Names.tessellator_intBuffer.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.tessellator_byteBuffer.clas, Names.tessellator_byteBuffer.name, Names.tessellator_byteBuffer.desc);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/nio/ByteBuffer", "asFloatBuffer", "()Ljava/nio/FloatBuffer;");
mv.visitFieldInsn(PUTFIELD, Names.tessellator_floatBuffer.clas, Names.tessellator_floatBuffer.name, Names.tessellator_floatBuffer.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.tessellator_byteBuffer.clas, Names.tessellator_byteBuffer.name, Names.tessellator_byteBuffer.desc);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/nio/ByteBuffer", "asShortBuffer", "()Ljava/nio/ShortBuffer;");
mv.visitFieldInsn(PUTFIELD, Names.tessellator_shortBuffer.clas, Names.tessellator_shortBuffer.name, Names.tessellator_shortBuffer.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ILOAD, 1);
mv.visitIntInsn(NEWARRAY, T_INT);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_rawBuffer.clas, Names.tessellator_rawBuffer.name, Names.tessellator_rawBuffer.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(ICONST_0);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_vertexCount.clas, Names.tessellator_vertexCount.name, Names.tessellator_vertexCount.desc);
//mv.visitVarInsn(ALOAD, 0);
//mv.visitFieldInsn(GETSTATIC, Names.Tessellator_, Names.Tessellator_tryVBO, "Z");
//Label l28 = new Label();
//mv.visitJumpInsn(IFEQ, l28);
//mv.visitMethodInsn(INVOKESTATIC, "org/lwjgl/opengl/GLContext", "getCapabilities", "()Lorg/lwjgl/opengl/ContextCapabilities;");
//mv.visitFieldInsn(GETFIELD, "org/lwjgl/opengl/ContextCapabilities", "GL_ARB_vertex_buffer_object", "Z");
//mv.visitJumpInsn(IFEQ, l28);
//mv.visitInsn(ICONST_1);
//Label l29 = new Label();
//mv.visitJumpInsn(GOTO, l29);
//mv.visitLabel(l28);
//mv.visitFrame(Opcodes.F_FULL, 2, new Object[] {Names.Tessellator_, Opcodes.INTEGER}, 1, new Object[] {Names.Tessellator_});
//mv.visitInsn(ICONST_0);
//mv.visitLabel(l29);
//mv.visitFrame(Opcodes.F_FULL, 2, new Object[] {Names.Tessellator_, Opcodes.INTEGER}, 2, new Object[] {Names.Tessellator_, Opcodes.INTEGER});
//mv.visitFieldInsn(PUTFIELD, Names.Tessellator_, Names.Tessellator_useVBO, "Z");
//mv.visitVarInsn(ALOAD, 0);
//mv.visitFieldInsn(GETFIELD, Names.Tessellator_, Names.Tessellator_useVBO, "Z");
//Label l31 = new Label();
//mv.visitJumpInsn(IFEQ, l31);
//mv.visitVarInsn(ALOAD, 0);
//mv.visitVarInsn(ALOAD, 0);
//mv.visitFieldInsn(GETFIELD, Names.Tessellator_, Names.Tessellator_vboCount, "I");
//mv.visitMethodInsn(INVOKESTATIC, Names.GLAllocation_, Names.GLAllocation_createDirectIntBuffer, Names.GLAllocation_createDirectIntBuffer_desc);
//mv.visitFieldInsn(PUTFIELD, Names.Tessellator_, Names.Tessellator_vertexBuffers, "Ljava/nio/IntBuffer;");
//mv.visitVarInsn(ALOAD, 0);
//mv.visitFieldInsn(GETFIELD, Names.Tessellator_, Names.Tessellator_vertexBuffers, "Ljava/nio/IntBuffer;");
//mv.visitMethodInsn(INVOKESTATIC, "org/lwjgl/opengl/ARBVertexBufferObject", "glGenBuffersARB", "(Ljava/nio/IntBuffer;)V");
//mv.visitLabel(l31);
//mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
}
mv.visitVarInsn(ALOAD, 0);
mv.visitIntInsn(BIPUSH, 16);
mv.visitIntInsn(NEWARRAY, T_FLOAT);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_.clas, "vertexPos", "[F");
}
mv.visitInsn(opcode);
}
}
private static class MVdraw extends MethodVisitor
{
public MVdraw(MethodVisitor mv) {
super(Opcodes.ASM4, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(185, l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTess", "draw", "("+Names.tessellator_.desc+")I");
mv.visitInsn(IRETURN);
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLocalVariable("this", Names.tessellator_.desc, null, l0, l1, 0);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
}
private static class MVreset extends MethodVisitor
{
public MVreset(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitFieldInsn(int opcode, String owner, String name,
String desc) {
//SMCLog.finest(" F %d %s.%s %s", opcode, ownerM, nameM, descM);
if (opcode==GETSTATIC && Names.tessellator_byteBuffer.equals(owner, name))
{
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, owner, name, desc);
return;
}
mv.visitFieldInsn(opcode, owner, name, desc);
}
}
private static class MVaddVertex extends MethodVisitor
{
public MVaddVertex(MethodVisitor mv) {
super(Opcodes.ASM4, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitLineNumber(466, l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(DLOAD, 1);
mv.visitVarInsn(DLOAD, 3);
mv.visitVarInsn(DLOAD, 5);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTess", "addVertex", "("+Names.tessellator_.desc+"DDD)V");
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLineNumber(467, l1);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitLocalVariable("this", Names.tessellator_.desc, null, l0, l2, 0);
mv.visitLocalVariable("par1", "D", null, l0, l2, 1);
mv.visitLocalVariable("par3", "D", null, l0, l2, 3);
mv.visitLocalVariable("par5", "D", null, l0, l2, 5);
mv.visitMaxs(7, 7);
mv.visitEnd();
}
}
private static class MVsetNormal extends MethodVisitor
{
public MVsetNormal(MethodVisitor mv) {
super(Opcodes.ASM4, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(ICONST_1);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_hasNormals.clas, Names.tessellator_hasNormals.name, Names.tessellator_hasNormals.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(FLOAD, 1);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_.clas, "normalX", "F");
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(FLOAD, 2);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_.clas, "normalY", "F");
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(FLOAD, 3);
mv.visitFieldInsn(PUTFIELD, Names.tessellator_.clas, "normalZ", "F");
mv.visitInsn(RETURN);
Label l5 = new Label();
mv.visitLabel(l5);
mv.visitLocalVariable("this", Names.tessellator_.desc, null, l0, l5, 0);
mv.visitLocalVariable("par1", "F", null, l0, l5, 1);
mv.visitLocalVariable("par2", "F", null, l0, l5, 2);
mv.visitLocalVariable("par3", "F", null, l0, l5, 3);
mv.visitMaxs(2, 4);
mv.visitEnd();
}
}
private static class MVsortQuad extends MethodVisitor
{
public MVsortQuad(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitIntInsn(int opcode, int operand) {
if (opcode == BIPUSH && operand == 32)
{
operand = 64;
}
super.visitIntInsn(opcode, operand);
}
}
}
@@ -1,107 +0,0 @@
package shadersmodcore.transform;
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;
import static org.objectweb.asm.Opcodes.*;
/** transformer for net.minecraft.client.renderer.texture.AbstractTexture */
public class SMCCTTextureAbstract implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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", "Lshadersmodcore/client/MultiTexID;", null, null);
fv.visitEnd();
}
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.abstractTexture_deleteGlTexture.equalsNameDesc(name, desc)) {
//SMCLog.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("()Lshadersmodcore/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", "()Lshadersmodcore/client/MultiTexID;", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTex", "getMultiTexID", "("+Names.abstractTexture_.desc+")Lshadersmodcore/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, "shadersmodcore/client/ShadersTex", "deleteTextures", "("+Names.abstractTexture_.desc+")V");
}
}
}
@@ -1,191 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
/** transformer for net.minecraft.client.renderer.texture.TextureAtlasSprite */
public class SMCCTTextureAtlasSprite implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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)
{
//SMCLog.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))
{
//SMCLog.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"))
{
//SMCLog.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))
{
//SMCLog.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"))
{
//SMCLog.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, "shadersmodcore/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, "shadersmodcore/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, "shadersmodcore/client/ShadersTex", "loadAtlasSprite", "(Ljava/awt/image/BufferedImage;IIII[III)[I");
return;
} else
if (Names.textureAtlasSpri_getFrameTextureData.equals(owner,name,desc)) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTex", "extractFrame", "([IIII)[I");
return;
} else
if (Names.equals(Names.textureAtlasSpri_.clas,"fixTransparentColor","([I)V",owner,name,desc)) {
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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, "shadersmodcore/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,62 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureClock implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.textureAtlasSpri_updateAnimation.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new SMCCTTextureAtlasSprite.MVanimation(cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
}
@@ -1,62 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureCompass implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.textureCompass_updateCompass.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s",classname,name,desc,nameM);
return new SMCCTTextureAtlasSprite.MVanimation(cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
}
@@ -1,95 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureDownload implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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) {
//SMCLog.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);
//SMCLog.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", "()Lshadersmodcore/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", "()Lshadersmodcore/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,117 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureDynamic implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (name.equals("<init>") && desc.equals("(II)V"))
{
//SMCLog.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))
{
//SMCLog.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, "shadersmodcore/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, "shadersmodcore/client/ShadersTex", "updateDynamicTexture", "(I[III"+Names.dynamicTexture_.desc+")V");
return;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
}
@@ -1,87 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureLayered implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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);
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (Names.iTextureObject_loadTexture.equalsNameDesc(name, desc))
{
//SMCLog.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, "shadersmodcore/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,104 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureManager implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s%s",classname,name,desc,nameM,descM);
if (Names.textureManager_bindTexture.equalsNameDesc(name, desc))
{
//SMCLog.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))
{
//SMCLog.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, "shadersmodcore/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, "shadersmodcore/client/ShadersTex", "deleteMultiTex", "("+Names.iTextureObject_.desc+")I");
return;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
}
@@ -1,191 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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 static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureMap implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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();
}
//SMCLog.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))
{
//SMCLog.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))
{
//SMCLog.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) {
//SMCLog.finest(" %s.%s%s",ownerM,nameM,descM);
if (Names.iResourceManager_getResource.equals(owner,name,desc)) {
SMCLog.finest(" %s","loadRes");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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)) {
SMCLog.finest(" %s","allocateTextureMap");
mv.visitVarInsn(ALOAD, varStitcher);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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)) {
SMCLog.finest(" %s","setSprite setIconName");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTex", "setSprite", "("+Names.textureAtlasSpri_.desc+")"+Names.textureAtlasSpri_.desc);
mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTex", "setIconName", "(Ljava/lang/String;)Ljava/lang/String;");
state = 0;
return;
}
else if (Names.textureUtil_uploadTexSub.equals(owner,name,desc)) {
SMCLog.finest(" %s","uploadTexSubForLoadAtlas");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/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", "()Lshadersmodcore/client/MultiTexID;");
mv.visitFieldInsn(PUTSTATIC, "shadersmodcore/client/ShadersTex", "updatingTex", "Lshadersmodcore/client/MultiTexID;");
}
@Override
public void visitInsn(int opcode) {
if (opcode==RETURN) {
mv.visitInsn(ACONST_NULL);
mv.visitFieldInsn(PUTSTATIC, "shadersmodcore/client/ShadersTex", "updatingTex", "Lshadersmodcore/client/MultiTexID;");
}
mv.visitInsn(opcode);
}
}
}
@@ -1,69 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureObject implements IClassTransformer {
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s",classname,name,desc,remappedName);
if (name.equals("getMultiTexID") && desc.equals("()Lshadersmodcore/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", "()Lshadersmodcore/client/MultiTexID;", null, null);
mv.visitEnd();
// end
cv.visitEnd();
}
}
}
@@ -1,89 +0,0 @@
package shadersmodcore.transform;
import java.util.Iterator;
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;
import static org.objectweb.asm.Opcodes.*;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.tree.MethodNode;
import net.minecraft.launchwrapper.IClassTransformer;
public class SMCCTTextureSimple implements IClassTransformer {
private static final int logDetail = 0;
@Override
public byte[] transform(String par1, String par2, byte[] par3) {
SMCLog.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;
//SMCLog.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)
{
//SMCLog.info(" method %s.%s%s = %s%s",classname,name,desc,nameM,descM);
if (Names.iTextureObject_loadTexture.equalsNameDesc(name, desc))
{
//SMCLog.finer(" patching method %s.%s%s = %s%s",classname,name,desc,nameM,descM);
return new MVloadTexture(
cv.visitMethod(access, name, desc, signature, exceptions));
}
return cv.visitMethod(access, name, desc, signature, exceptions);
}
}
private static class MVloadTexture extends MethodVisitor
{
public MVloadTexture(MethodVisitor mv) {
super(Opcodes.ASM4, mv);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name,
String desc) {
if (Names.textureUtil_uploadTextureImageAllocate.equals(owner,name,desc)) {
//mv.visitMethodInsn(opcode, owner, name, desc);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, Names.simpleTexture_textureLocation.clas, Names.simpleTexture_textureLocation.name, Names.simpleTexture_textureLocation.desc);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKEVIRTUAL, Names.simpleTexture_.clas, "getMultiTexID", "()Lshadersmodcore/client/MultiTexID;");
mv.visitMethodInsn(INVOKESTATIC, "shadersmodcore/client/ShadersTex", "loadSimpleTexture", "(ILjava/awt/image/BufferedImage;ZZ"+Names.iResourceManager_.desc+Names.resourceLocation_.desc+"Lshadersmodcore/client/MultiTexID;)I");
SMCLog.finer(" loadSimpleTexture");
return;
}
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
}
@@ -1,84 +0,0 @@
package shadersmodcore.transform;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import net.minecraft.launchwrapper.IClassTransformer;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.commons.Remapper;
public class SMCClassTransformer implements IClassTransformer {
Names names;
/** map of class transformer */
protected Map<String,IClassTransformer> ctMap;
public void put(Names.Clas clas, IClassTransformer ct)
{
ctMap.put(clas.clas.replace('/', '.'), ct);
}
// constructor
public SMCClassTransformer()
{
names = new Names();
InitNames.init();
ctMap = new HashMap();
put(Names.block_ , new SMCCTBlock());
put(Names.itemBlock_ , new SMCCTItemBlock());
put(Names.minecraft_ , new SMCCTMinecraft());
put(Names.guiOptions_ , new SMCCTGuiOptions());
put(Names.modelRenderer_ , new SMCCTModelRenderer());
put(Names.openGlHelper_ , new SMCCTOpenGlHelper());
put(Names.tessellator_ , new SMCCTTessellator());
put(Names.renderBlocks_ , new SMCCTRenderBlocks());
put(Names.renderGlobal_ , new SMCCTRenderGlobal());
put(Names.entityRenderer_ , new SMCCTEntityRenderer());
put(Names.render_ , new SMCCTRender());
put(Names.renderManager_ , new SMCCTRenderManager());
put(Names.rendererLivingE_ , new SMCCTRendererLivingEntity());
put(Names.renderDragon_ , new SMCCTRenderSpider());
put(Names.renderEnderman_ , new SMCCTRenderSpider());
put(Names.renderSpider_ , new SMCCTRenderSpider());
put(Names.itemRenderer_ , new SMCCTItemRenderer());
put(Names.textureDownload_ , new SMCCTTextureDownload());
put(Names.abstractTexture_ , new SMCCTTextureAbstract());
put(Names.iTextureObject_ , new SMCCTTextureObject());
put(Names.simpleTexture_ , new SMCCTTextureSimple());
put(Names.layeredTexture_ , new SMCCTTextureLayered());
put(Names.dynamicTexture_ , new SMCCTTextureDynamic());
put(Names.textureMap_ , new SMCCTTextureMap());
put(Names.textureAtlasSpri_, new SMCCTTextureAtlasSprite());
put(Names.textureClock_ , new SMCCTTextureClock());
put(Names.textureCompass_ , new SMCCTTextureCompass());
put(Names.textureManager_ , new SMCCTTextureManager());
ctMap.put("mrtjp.projectred.illumination.RenderHalo$", new SMCCTPrjRedIlluRenderHalo());
ctMap.put("net.smart.render.ModelRotationRenderer", new SMCCTSmartMoveModelRotationRenderer());
}
@Override
public byte[] transform(String par1, String par2, byte[] par3)
{
byte[] bytecode = par3;
//if (par2.startsWith("mrtjp")) SMCLog.info("**** [%s]", par2);
IClassTransformer ct = ctMap.get(par2);
if (ct != null)
{
bytecode = ct.transform(par1, par2, bytecode);
int len1 = par3.length; //arg2!=null?arg2.length:0;
int len2 = bytecode.length; //bytecode!=null?bytecode.length:0;
SMCLog.fine(" %d (%+d)", len2, len2-len1);
}
return bytecode;
}
}
-105
View File
@@ -1,105 +0,0 @@
package shadersmodcore.transform;
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;
import java.util.logging.SimpleFormatter;
import static java.util.logging.Level.*;
public abstract class SMCLog {
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 SMCLogger extends Logger {
SMCLogger(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 smcLogName = "SMC";
public static final Logger logger = new SMCLogger(smcLogName);
public static final Level SMCINFO = new SMCLevel("INF",850);
public static final Level SMCCONFIG = new SMCLevel("CFG",840);
public static final Level SMCFINE = new SMCLevel("FNE",830);
public static final Level SMCFINER = new SMCLevel("FNR",820);
public static final Level SMCFINEST = 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(SMCINFO))
logger.log(SMCINFO,String.format(format, args));
}
public static void config(String format, Object ... args) {
if (logger.isLoggable(SMCCONFIG))
logger.log(SMCCONFIG,String.format(format, args));
}
public static void fine(String format, Object ... args) {
if (logger.isLoggable(SMCFINE))
logger.log(SMCFINE,String.format(format, args));
}
public static void finer(String format, Object ... args) {
if (logger.isLoggable(SMCFINER))
logger.log(SMCFINER,String.format(format, args));
}
public static void finest(String format, Object ... args) {
if (logger.isLoggable(SMCFINEST))
logger.log(SMCFINEST,String.format(format, args));
}
}
@@ -1,8 +0,0 @@
package shadersmodcore.transform;
public class InitNames {
public static void init()
{
new NamerMcp().setNames();
}
}
@@ -1,205 +0,0 @@
package shadersmodcore.transform;
import static shadersmodcore.transform.Names.*;
public class Namer1_7_10 extends Namer {
public void setNames() {
setNames1_7_10();
}
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");
guiOptions_actionPerformed = m(guiOptions_ ,"a","("+guiButton_.desc+")V");
guiOptions_initGui = m(guiOptions_ ,"b","()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");
minecraft_startGame = m(minecraft_ ,"ag" ,"()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");
renderBlocks_renderPistonExtension = m(renderBlocks_ ,"c","("+block_.desc+"IIIZ)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);
}
}
@@ -1,183 +0,0 @@
package shadersmodcore.transform;
import static shadersmodcore.transform.Names.*;
public class Namer1_7_2 extends Namer {
public void setNames() {
block_ = c("net/minecraft/block/Block");
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");
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",null);
guiOptions_buttonList = f(guiOptions_ ,"field_146292_n",null);
guiOptions_width = f(guiOptions_ ,"field_146294_l",null);
guiOptions_height = f(guiOptions_ ,"field_146295_m",null);
guiOptions_mc = f(guiOptions_ ,"field_146297_k",null);
guiOptions_options = f(guiOptions_ ,"field_146443_h",null);
layeredTexture_layeredTextureNames = f(layeredTexture_,"field_110567_b",null);
minecraft_renderGlobal = f(minecraft_ ,"field_71438_f" ,null);
minecraft_gameSettings = f(minecraft_ ,"field_71474_y" ,null);
modelRenderer_displayList = f(modelRenderer_ ,"field_78811_r" ,null);
modelRenderer_compiled = f(modelRenderer_ ,"field_78812_q" ,null);
renderGlobal_glSkyList = f(renderGlobal_ ,"field_72771_w" ,null);
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_instance = f(renderManager_ , "field_78727_a",renderManager_.desc);
simpleTexture_textureLocation = f(simpleTexture_ ,"field_110568_b",resourceLocation_.desc);
tessellator_floatBuffer = f(tessellator_ ,"field_147566_d",null);
tessellator_shortBuffer = f(tessellator_ ,"field_147567_e",null);
tessellator_intBuffer = f(tessellator_ ,"field_147568_c",null);
tessellator_byteBuffer = f(tessellator_ ,"field_78394_d" ,null);
tessellator_rawBuffer = f(tessellator_ ,"field_78405_h" ,null);
tessellator_vertexCount = f(tessellator_ ,"field_78406_i" ,null);
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","("+iBlockAccess_.desc+"III)F");
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;");
guiOptions_actionPerformed = m(guiOptions_ ,"func_146284_a","("+guiButton_.desc+")V");
guiOptions_initGui = m(guiOptions_ ,"func_73866_w_","()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");
minecraft_startGame = m(minecraft_ ,"func_71384_a" ,"()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_renderStdBlockWithAOP = m(renderBlocks_ ,"func_147808_b","("+block_.desc+"IIIFFF)Z");
renderBlocks_renderPistonExtension = m(renderBlocks_ ,"func_147809_c","("+block_.desc+"IIIZ)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_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");
worldClient_getCelestialAngle = m(worldClient_ ,"func_72826_c" ,"(F)F");
worldClient_getRainStrength = m(worldClient_ ,"func_72867_j" ,"(F)F");
frustrum_setPosition = m(frustrum_,iCamera_setPosition);
}
}
@@ -1,191 +0,0 @@
package shadersmodcore.transform;
import static shadersmodcore.transform.Names.*;
public class Namer1_7_4 extends Namer {
public void setNames() {
setNames1_7_4();
}
public void setNames1_7_4() {
block_ = c("ahz");
minecraft_ = c("azi");
guiButton_ = c("bau");
guiOptions_ = c("bcb");
guiScreen_ = c("bcl");
modelRenderer_ = c("bjs");
worldClient_ = c("bka");
effectRenderer_ = c("blh");
entityRenderer_ = c("bmm");
glAllocation_ = c("azh");
itemRenderer_ = c("bmr");
openGlHelper_ = c("bwg");
renderBlocks_ = c("bmf");
renderGlobal_ = c("bmt");
tessellator_ = c("bna");
worldRenderer_ = c("bmh");
frustrum_ = c("bnq");
iCamera_ = c("bno");
render_ = c("boh");
renderDragon_ = c("boe");
renderEnderman_ = c("bof");
renderSpider_ = c("bpo");
renderManager_ = c("bog");
rendererLivingE_ = c("bpa");
abstractTexture_ = c("bqi");
dynamicTexture_ = c("bqj");
iTextureObject_ = c("bra");
layeredTexture_ = c("bqm");
simpleTexture_ = c("bqn");
stitcher_ = c("bqo");
textureAtlasSpri_ = c("bqw");
textureClock_ = c("bre");
textureCompass_ = c("brf");
textureManager_ = c("bqy");
textureMap_ = c("bqs");
textureUtil_ = c("brb");
textureDownload_ = c("bqk");
iResource_ = c("brp");
iResourceManager_ = c("brr");
gameSettings_ = c("bac");
tessVertexState_ = c("bnb");
entity_ = c("qr");
entityLivingBase_ = c("rm");
entityDragon_ = c("vr");
entityEnderman_ = c("wr");
entitySpider_ = c("xe");
entityPlayer_ = c("xq");
itemBlock_ = c("zy");
itemStack_ = c("abu");
movingObjectPos_ = c("ayn");
resourceLocation_ = c("brq");
vec3_ = c("ayp");
iBlockAccess_ = c("agc");
world_ = c("afs");
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");
guiOptions_buttonList = f(guiOptions_ ,"n","Ljava/util/List;");
guiOptions_width = f(guiOptions_ ,"l","I");
guiOptions_height = f(guiOptions_ ,"m","I");
guiOptions_mc = f(guiOptions_ ,"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" ,null);
modelRenderer_compiled = f(modelRenderer_ ,"t" ,null);
renderGlobal_glSkyList = f(renderGlobal_ ,"G" ,null);
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_,"i","Z");
vec3_xCoord = f(vec3_ ,"c" ,"D");
abstractTexture_deleteGlTexture = m(abstractTexture_,"c","()V");
block_getAoLight = m(block_ ,"I","("+iBlockAccess_.desc+"III)F");
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;");
guiOptions_actionPerformed = m(guiOptions_ ,"a","("+guiButton_.desc+")V");
guiOptions_initGui = m(guiOptions_ ,"r_","()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");
minecraft_startGame = m(minecraft_ ,"ad" ,"()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_renderStdBlockWithAOP = m(renderBlocks_ ,"b","("+block_.desc+"IIIFFF)Z");
renderBlocks_renderPistonExtension = m(renderBlocks_ ,"c","("+block_.desc+"IIIZ)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_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");
worldClient_getCelestialAngle = m(worldClient_ ,"c" ,"(F)F");
worldClient_getRainStrength = m(worldClient_ ,"j" ,"(F)F");
frustrum_setPosition = m(frustrum_,iCamera_setPosition);
}
}
@@ -1,191 +0,0 @@
package shadersmodcore.transform;
import static shadersmodcore.transform.Names.*;
public class Namer1_7_5 extends Namer {
public void setNames() {
setNames1_7_5();
}
public void setNames1_7_5() {
block_ = c("aif");
minecraft_ = c("azl");
guiButton_ = c("bax");
guiOptions_ = c("bce");
guiScreen_ = c("bco");
modelRenderer_ = c("bjy");
worldClient_ = c("bkg");
effectRenderer_ = c("bln");
entityRenderer_ = c("bms");
glAllocation_ = c("azk");
itemRenderer_ = c("bmx");
openGlHelper_ = c("bwq");
renderBlocks_ = c("bml");
renderGlobal_ = c("bmz");
tessellator_ = c("bng");
worldRenderer_ = c("bmn");
frustrum_ = c("bnw");
iCamera_ = c("bnu");
render_ = c("bon");
renderDragon_ = c("bok");
renderEnderman_ = c("bol");
renderSpider_ = c("bpu");
renderManager_ = c("bom");
rendererLivingE_ = c("bpg");
abstractTexture_ = c("bqo");
dynamicTexture_ = c("bqp");
iTextureObject_ = c("brg");
layeredTexture_ = c("bqs");
simpleTexture_ = c("bqt");
stitcher_ = c("bqu");
textureAtlasSpri_ = c("brc");
textureClock_ = c("brk");
textureCompass_ = c("brl");
textureManager_ = c("bre");
textureMap_ = c("bqy");
textureUtil_ = c("brh");
textureDownload_ = c("bqq");
iResource_ = c("brv");
iResourceManager_ = c("brx");
gameSettings_ = c("baf");
tessVertexState_ = c("bnh");
entity_ = c("qx");
entityLivingBase_ = c("rs");
entityDragon_ = c("vx");
entityEnderman_ = c("wx");
entitySpider_ = c("xk");
entityPlayer_ = c("xw");
itemBlock_ = c("aae");
itemStack_ = c("aca");
movingObjectPos_ = c("ayr");
resourceLocation_ = c("brw");
vec3_ = c("ayt");
iBlockAccess_ = c("agi");
world_ = c("afy");
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");
guiOptions_buttonList = f(guiOptions_ ,"n","Ljava/util/List;");
guiOptions_width = f(guiOptions_ ,"l","I");
guiOptions_height = f(guiOptions_ ,"m","I");
guiOptions_mc = f(guiOptions_ ,"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" ,null);
modelRenderer_compiled = f(modelRenderer_ ,"t" ,null);
renderGlobal_glSkyList = f(renderGlobal_ ,"G" ,null);
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_ ,"f","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_,"i","Z");
vec3_xCoord = f(vec3_ ,"a" ,"D");
abstractTexture_deleteGlTexture = m(abstractTexture_,"c","()V");
block_getAoLight = m(block_ ,"I","("+iBlockAccess_.desc+"III)F");
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;");
guiOptions_actionPerformed = m(guiOptions_ ,"a","("+guiButton_.desc+")V");
guiOptions_initGui = m(guiOptions_ ,"r_","()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");
minecraft_startGame = m(minecraft_ ,"ad" ,"()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_renderStdBlockWithAOP = m(renderBlocks_ ,"b","("+block_.desc+"IIIFFF)Z");
renderBlocks_renderPistonExtension = m(renderBlocks_ ,"c","("+block_.desc+"IIIZ)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_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");
worldClient_getCelestialAngle = m(worldClient_ ,"c" ,"(F)F");
worldClient_getRainStrength = m(worldClient_ ,"j" ,"(F)F");
frustrum_setPosition = m(frustrum_,iCamera_setPosition);
}
}
@@ -1,16 +0,0 @@
package shadersmodcore.transform;
import java.util.HashMap;
import java.util.Map;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.commons.SimpleRemapper;
public class NamerMcf extends NamerMcp {
public void setNames()
{
setNamesSrg();
rename("../build/unpacked/conf/");
}
}
@@ -1,129 +0,0 @@
package shadersmodcore.transform;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.objectweb.asm.commons.Remapper;
import org.objectweb.asm.commons.SimpleRemapper;
import shadersmodcore.transform.Names.Clas;
import shadersmodcore.transform.Names.Fiel;
import shadersmodcore.transform.Names.Meth;
public class NamerMcp extends NamerSrg {
public void setNames()
{
setNamesSrg();
lookupReobfName("../conf/");
rename("../conf/");
}
public void rename(String confPath)
{
Map<String,String> nameMap;
nameMap = loadNameMapCSV(confPath+"fields.csv");
for (Fiel f : af) {
String s = nameMap.get(f.name);
if (s!= null) {
f.name = s;
}
}
nameMap = loadNameMapCSV(confPath+"methods.csv");
for (Meth m : am) {
String s = nameMap.get(m.name);
if (s!= null) {
m.name = s;
}
}
}
Map loadNameMapCSV(String fileName)
{
Map map = new HashMap();
BufferedReader rd = null;
try {
rd = new BufferedReader(new FileReader(fileName));
String line;
rd.readLine(); // skip first line;
while ((line = rd.readLine()) != null) {
String[] tokens = line.split(",");
if(tokens.length>1)
{
map.put(tokens[0],tokens[1]);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (rd != null) {
try {
rd.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return map;
}
void lookupReobfName(String confPath)
{
Map<String,String> nameMap;
nameMap = loadReobfMap(confPath+"joined.srg");
for (Clas c : ac) {
String s = nameMap.get(c.name);
System.out.printf("C %s %s\n",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);
}
for (Meth m : am) {
String s = nameMap.get(m.clas+"/"+m.name+m.desc);
System.out.printf("M %s %s\n",m.name,s);
}
}
Map loadReobfMap(String fileName)
{
Map map = new HashMap();
BufferedReader rd = null;
try {
rd = new BufferedReader(new FileReader(fileName));
String line;
while ((line = rd.readLine()) != null) {
String[] tokens = line.split(" ");
if(tokens.length>1)
{
if ("CL:".equals(tokens[0])) {
map.put(tokens[2], tokens[1]);
} else if ("FD:".equals(tokens[0])) {
map.put(tokens[2], tokens[1]);
} else if ("MD:".equals(tokens[0])) {
map.put(tokens[3]+tokens[4], tokens[1].substring(tokens[1].lastIndexOf('/')+1));
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (rd != null) {
try {
rd.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return map;
}
}
+2
View File
@@ -0,0 +1,2 @@
before_install:
- ./gradlew setupCIWorkspace
+5
View File
@@ -0,0 +1,5 @@
// Add any additional repositories for your dependencies here
repositories {
}
-3
View File
@@ -1,3 +0,0 @@
Manifest-Version: 1.0
TweakClass: shadersmodcore.loading.SMCTweaker
TweakOrder: 1100
-17
View File
@@ -1,17 +0,0 @@
[
{
"modid": "shadersmod",
"name": "GLSL Shaders Mod",
"description": "Use custom GLSL shaders to render world.",
"version": "2.3.18",
"mcversion": "1.7.10",
"url": "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1286604",
"updateUrl": "",
"authors": ["karyonix","sonic ether","id_miner","daxnitro"],
"credits": "Based on daxnitro's GLSL Shaders Mod. Updated by karyonix, id_miner, sonic ether.",
"logoFile": "",
"screenshots": [],
"parent":"",
"dependencies": []
}
]
+10
View File
@@ -0,0 +1,10 @@
plugins {
id 'com.diffplug.blowdryerSetup' version '1.6.0'
}
apply plugin: 'com.diffplug.blowdryerSetup'
blowdryerSetup {
github('GTNewHorizons/ExampleMod1.7.10', 'tag', '0.1.5')
//devLocal '.' // Use this when testing config updates locally
}
@@ -0,0 +1,7 @@
package net.minecraft.client.model;
import java.util.List;
public class ModelBase {
public List boxList;
}
@@ -0,0 +1,10 @@
package net.minecraft.client.model;
import java.util.List;
public class ModelRenderer {
public List childModels;
public void resetDisplayList() {}
}
@@ -0,0 +1,14 @@
package net.minecraft.client.renderer;
public class EntityRenderer {
public static int anaglyphField;
public static boolean anaglyphEnable;
/**
* Render player hand
*/
public void renderHand(float p_78476_1_, int p_78476_2_) {}
public void renderWorld(float f, long l) {}
}
@@ -0,0 +1,8 @@
package net.minecraft.client.renderer;
public class RenderGlobal {
public WorldRenderer[] worldRenderers;
public void loadRenderers() {}
}
@@ -0,0 +1,180 @@
package net.minecraft.client.renderer;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.ShortBuffer;
import net.minecraft.client.shader.TesselatorVertexState;
public class Tessellator {
private static int nativeBufferSize;
private static int trivertsInBuffer;
public static boolean renderingWorldRenderer;
public boolean defaultTexture;
private int rawBufferSize;
public int textureID;
/** The byte buffer used for GL allocation. */
public ByteBuffer byteBuffer;
/** The same memory as byteBuffer, but referenced as an integer buffer. */
public IntBuffer intBuffer;
/** The same memory as byteBuffer, but referenced as an float buffer. */
public FloatBuffer floatBuffer;
/** The same memory as byteBuffer, but referenced as an short buffer. */
public ShortBuffer shortBuffer;
/** Raw integer array. */
public int[] rawBuffer;
/** The number of vertices to be drawn in the next draw call. Reset to 0 between draw calls. */
public int vertexCount;
/** The first coordinate to be used for the texture. */
public double textureU;
/** The second coordinate to be used for the texture. */
public double textureV;
public int brightness;
/** The color (RGBA) value to be used for the following draw call. */
public int color;
/** Whether the current draw object for this tessellator has color values. */
public boolean hasColor;
/** Whether the current draw object for this tessellator has texture coordinates. */
public boolean hasTexture;
public boolean hasBrightness;
/** Whether the current draw object for this tessellator has normal values. */
public boolean hasNormals;
/** The index into the raw buffer to be used for the next data. */
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.
*/
public int addedVertices;
/** Disables all color information for the following draw call. */
public boolean isColorDisabled;
/** The draw mode currently being used by the tessellator. */
public int drawMode;
/** An offset to be applied along the x-axis for all vertices in this draw call. */
public double xOffset;
/** An offset to be applied along the y-axis for all vertices in this draw call. */
public double yOffset;
/** An offset to be applied along the z-axis for all vertices in this draw call. */
public double zOffset;
/** The normal to be applied to the face being drawn. */
public int normal;
/** The static instance of the Tessellator. */
public static final Tessellator instance = new Tessellator();
/** Whether this tessellator is currently in draw mode. */
public boolean isDrawing;
/** The size of the buffers used (in integers). */
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 Tessellator(int p_i1250_1_) {}
public Tessellator() {}
/**
* Draws the data set up in this tessellator and resets the state to prepare for new drawing.
*/
public int draw() {
return 0;
}
public TesselatorVertexState getVertexState(float p_147564_1_, float p_147564_2_, float p_147564_3_) {
return null;
}
public void setVertexState(TesselatorVertexState p_147565_1_) {}
/**
* Clears the tessellator state in preparation for new drawing.
*/
public void reset() {}
/**
* Sets draw mode in the tessellator to draw quads.
*/
public void startDrawingQuads() {}
/**
* Resets tessellator state and prepares for drawing (with the specified draw mode).
*/
public void startDrawing(int p_78371_1_) {}
/**
* Sets the texture coordinates.
*/
public void setTextureUV(double p_78385_1_, double p_78385_3_) {}
public void setBrightness(int p_78380_1_) {}
/**
* Sets the RGB values as specified, converting from floats between 0 and 1 to integers from 0-255.
*/
public void setColorOpaque_F(float p_78386_1_, float p_78386_2_, float p_78386_3_) {}
/**
* Sets the RGBA values for the color, converting from floats between 0 and 1 to integers from 0-255.
*/
public void setColorRGBA_F(float p_78369_1_, float p_78369_2_, float p_78369_3_, float p_78369_4_) {}
/**
* Sets the RGB values as specified, and sets alpha to opaque.
*/
public void setColorOpaque(int p_78376_1_, int p_78376_2_, int p_78376_3_) {}
/**
* Sets the RGBA values for the color. Also clamps them to 0-255.
*/
public void setColorRGBA(int p_78370_1_, int p_78370_2_, int p_78370_3_, int p_78370_4_) {}
public void func_154352_a(byte p_154352_1_, byte p_154352_2_, byte p_154352_3_) {}
/**
* Adds a vertex specifying both x,y,z and the texture u,v for it.
*/
public void addVertexWithUV(
double p_78374_1_, double p_78374_3_, double p_78374_5_, double p_78374_7_, double p_78374_9_) {}
/**
* Adds a vertex with the specified x,y,z to the current draw call. It will trigger a draw() if the buffer gets
* full.
*/
public void addVertex(double p_78377_1_, double p_78377_3_, double p_78377_5_) {}
/**
* Sets the color to the given opaque value (stored as byte values packed in an integer).
*/
public void setColorOpaque_I(int p_78378_1_) {}
/**
* Sets the color to the given color (packed as bytes in integer) and alpha values.
*/
public void setColorRGBA_I(int p_78384_1_, int p_78384_2_) {}
/**
* Disables colors for the current draw call.
*/
public void disableColor() {}
/**
* Sets the normal for the current draw call.
*/
public void setNormal(float p_78375_1_, float p_78375_2_, float p_78375_3_) {}
/**
* Sets the translation for all vertices in the current draw call.
*/
public void setTranslation(double p_78373_1_, double p_78373_3_, double p_78373_5_) {}
/**
* Offsets the translation for all vertices in the current draw call.
*/
public void addTranslation(float p_78372_1_, float p_78372_2_, float p_78372_3_) {}
}
@@ -0,0 +1,13 @@
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) {}
}
@@ -0,0 +1,6 @@
package net.minecraft.client.renderer.culling;
public class Frustrum implements ICamera {
public void setPosition(double x, double y, double z) {}
}
@@ -0,0 +1,3 @@
package net.minecraft.client.renderer.culling;
public interface ICamera {}
@@ -0,0 +1,3 @@
package net.minecraft.client.renderer.entity;
public abstract class Render {}
@@ -0,0 +1,10 @@
package net.minecraft.client.renderer.entity;
import net.minecraft.client.model.ModelBase;
public abstract class RendererLivingEntity extends Render {
public ModelBase mainModel;
/** The model to be used during the render passes. */
public ModelBase renderPassModel;
}
@@ -0,0 +1,17 @@
package net.minecraft.client.renderer.texture;
import com.gtnewhorizons.angelica.client.MultiTexID;
public abstract class AbstractTexture implements ITextureObject {
public int glTextureId = -1;
public MultiTexID multiTex;
public int getGlTextureId() {
return 0;
}
public MultiTexID getMultiTexID() {
return null;
}
}
@@ -0,0 +1,13 @@
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() {}
}
@@ -0,0 +1,10 @@
package net.minecraft.client.renderer.texture;
import com.gtnewhorizons.angelica.client.MultiTexID;
public interface ITextureObject {
MultiTexID getMultiTexID();
int getGlTextureId();
}
@@ -0,0 +1,8 @@
package net.minecraft.client.renderer.texture;
public class TextureAtlasSprite {
public boolean useAnisotropicFiltering;
public void updateAnimation() {}
}
@@ -0,0 +1,18 @@
package net.minecraft.client.renderer.texture;
import net.minecraft.util.ResourceLocation;
public class TextureMap extends AbstractTexture {
public static ResourceLocation locationBlocksTexture;
public int atlasWidth;
public int atlasHeight;
public int getTextureType() {
return 0;
}
public ResourceLocation completeResourceLocation(ResourceLocation resourceLocation, int i) {
return null;
}
}
+1
View File
@@ -0,0 +1 @@
Stubs for the compile stubs
@@ -0,0 +1,3 @@
package com.gtnewhorizons.angelica.client;
public class MultiTexID {}
@@ -0,0 +1,3 @@
package net.minecraft.client.shader;
public class TesselatorVertexState {}
@@ -0,0 +1,3 @@
package net.minecraft.util;
public class ResourceLocation {}
@@ -0,0 +1,12 @@
package com.gtnewhorizons.angelica;
// Use this class for Strings only. Do not import any classes here. It will lead to issues with Mixins if in use!
public class Tags {
// GRADLETOKEN_* will be replaced by your configuration values at build time
public static final String MODID = "GRADLETOKEN_MODID";
public static final String MODNAME = "GRADLETOKEN_MODNAME";
public static final String VERSION = "GRADLETOKEN_VERSION";
public static final String GROUPNAME = "GRADLETOKEN_GROUPNAME";
}
@@ -0,0 +1,16 @@
package com.gtnewhorizons.angelica.client;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.resources.IResourceManager;
public class DefaultTexture extends AbstractTexture {
public DefaultTexture() {
loadTexture(null);
}
public void loadTexture(IResourceManager resourcemanager) {
int[] aint = ShadersTex.createAIntImage(1, 0xFFFFFFFF);
ShadersTex.setupTexture(this.getMultiTexID(), aint, 1, 1, false, false);
}
}
@@ -0,0 +1,354 @@
package com.gtnewhorizons.angelica.client;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.settings.GameSettings;
import org.lwjgl.Sys;
public class GuiShaders extends GuiScreen {
/** This GUI's parent GUI. */
protected GuiScreen parentGui;
private int updateTimer = -1;
public boolean needReinit;
/*
private class GuiListShaderpacks {
int posX,posY,sizeX,sizeY;
int viewPosY;
int itemHeight = 20;
int selection;
ArrayList<String> listShaderpacks;
public void draw() {
Tessellator tess = Tessellator.instance;
int listSize = listShaderpacks.size();
int i,j;
for (i=viewPosY/itemHeight, j=Math.min((viewPosY+sizeY)/itemHeight,listSize); i<j; ++i)
{
int itemY = posY-viewPosY+itemHeight*i;
boolean selected = i==selection;
tess.startDrawingQuads();
tess.setColorRGBA(0,0,selected?128:0,128);
tess.addVertex(posX,itemY,0);
tess.addVertex(posX,itemY+itemHeight,0);
tess.addVertex(posX+sizeX,itemY+itemHeight,0);
tess.addVertex(posX+sizeX,itemY,0);
tess.draw();
field_146289_q.drawString(listShaderpacks.get(i), posX, itemY, 0xFFFFFFFF, true);
}
}
}
private GuiListShaderpacks guiListShaderpacks;
*/
private GuiSlotShaders shaderList;
/** This GUI's 'Done' button. */
// private GuiSmallButton doneButton;
public GuiShaders(GuiScreen par1GuiScreen, GameSettings par2GameSettings) {
this.parentGui = par1GuiScreen;
}
private static String toStringOnOff(boolean value) {
return value ? "On" : "Off";
}
@Override
/**
* Adds the buttons (and other controls) to the screen in question.
*/
public void initGui() {
if (Shaders.shadersConfig == null) Shaders.loadConfig();
List buttonList = this.buttonList;
int width = this.width;
int height = this.height;
buttonList.add(new GuiButton(
17, width * 3 / 4 - 60, 30, 160, 18, "NormapMap: " + toStringOnOff(Shaders.configNormalMap)));
buttonList.add(new GuiButton(
18, width * 3 / 4 - 60, 50, 160, 18, "SpecularMap: " + toStringOnOff(Shaders.configSpecularMap)));
buttonList.add(new GuiButton(
15,
width * 3 / 4 - 60,
70,
160,
18,
"RenderResMul: " + String.format("%.04f", Shaders.configRenderResMul)));
buttonList.add(new GuiButton(
16,
width * 3 / 4 - 60,
90,
160,
18,
"ShadowResMul: " + String.format("%.04f", Shaders.configShadowResMul)));
buttonList.add(new GuiButton(
10,
width * 3 / 4 - 60,
110,
160,
18,
"HandDepth: " + String.format("%.04f", Shaders.configHandDepthMul)));
buttonList.add(new GuiButton(
9, width * 3 / 4 - 60, 130, 160, 18, "CloudShadow: " + toStringOnOff(Shaders.configCloudShadow)));
// buttonList.add(new GuiButton(14, width *3 /4 -60, 150, 160, 18, "ShadowClipFrustrum: "
// +toStringOnOff(Shaders.configShadowClipFrustrum)));
buttonList.add(new GuiButton(
4,
width * 3 / 4 - 60,
170,
160,
18,
"tweakBlockDamage: " + toStringOnOff(Shaders.configTweakBlockDamage)));
buttonList.add(new GuiButton(
19, width * 3 / 4 - 60, 190, 160, 18, "OldLighting: " + toStringOnOff(Shaders.configOldLighting)));
// buttonList.add(new GuiButton(11, width *3 /4 -60, 210, 160, 18, "Tex Min: "
// +Shaders.texMinFilDesc[Shaders.configTexMinFilB]));
// buttonList.add(new GuiButton(12, width *3 /4 -60, 230, 160, 18, "Tex_n Mag: "
// +Shaders.texMagFilDesc[Shaders.configTexMagFilN]));
// buttonList.add(new GuiButton(13, width *3 /4 -60, 250, 160, 18, "Tex_s Mag: "
// +Shaders.texMagFilDesc[Shaders.configTexMagFilS]));
buttonList.add(new GuiButton(6, width * 3 / 4 - 60, height - 25, 160, 20, "Done"));
buttonList.add(new GuiButton(5, width / 4 - 80, height - 25, 160, 20, "Open shaderpacks folder"));
this.shaderList = new GuiSlotShaders(this);
this.shaderList.registerScrollButtons(7, 8); // registerScrollButtons(7, 8);
this.needReinit = false;
}
@Override
/** actionPerformed
* Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
*/
protected void actionPerformed(GuiButton par1GuiButton) {
if (par1GuiButton.enabled) // enabled
{
switch (par1GuiButton.id) // id
{
case 4: /* New block breaking */
Shaders.configTweakBlockDamage = !Shaders.configTweakBlockDamage;
// displayString
par1GuiButton.displayString = "tweakBlockDamage: " + toStringOnOff(Shaders.configTweakBlockDamage);
break;
case 9: /* Cloud shadow */
Shaders.configCloudShadow = !Shaders.configCloudShadow;
par1GuiButton.displayString = "CloudShadow: " + toStringOnOff(Shaders.configCloudShadow);
break;
case 10: /* Hand Depth */ {
float val = Shaders.configHandDepthMul;
float[] choices = {0.0625f, 0.125f, 0.25f, 0.5f, 1.0f};
int i;
if (!isShiftKeyDown()) { // isShiftKeyDown
for (i = 0; i < choices.length && choices[i] <= val; ++i) {}
if (i == choices.length) i = 0;
} else {
for (i = choices.length - 1; i >= 0 && val <= choices[i]; --i) {}
if (i < 0) i = choices.length - 1;
}
Shaders.configHandDepthMul = choices[i];
par1GuiButton.displayString = "HandDepth: " + String.format("%.4f", Shaders.configHandDepthMul);
break;
}
case 15: /* Render Resolution Multiplier */ {
float val = Shaders.configRenderResMul;
float[] choices = {0.25f, 0.3333333333f, 0.5f, 0.7071067812f, 1.0f, 1.414213562f, 2.0f};
int i;
if (!isShiftKeyDown()) {
for (i = 0; i < choices.length && choices[i] <= val; ++i) {}
if (i == choices.length) i = 0;
} else {
for (i = choices.length - 1; i >= 0 && val <= choices[i]; --i) {}
if (i < 0) i = choices.length - 1;
}
Shaders.configRenderResMul = choices[i];
par1GuiButton.displayString = "RenderResMul: " + String.format("%.4f", Shaders.configRenderResMul);
Shaders.scheduleResize();
break;
}
case 16: /* Shadow Resolution Multiplier */ {
float val = Shaders.configShadowResMul;
float[] choices = {0.25f, 0.3333333333f, 0.5f, 0.7071067812f, 1.0f, 1.414213562f, 2.0f, 3.0f, 4.0f};
int i;
if (!isShiftKeyDown()) {
for (i = 0; i < choices.length && choices[i] <= val; ++i) {}
if (i == choices.length) i = 0;
} else {
for (i = choices.length - 1; i >= 0 && val <= choices[i]; --i) {}
if (i < 0) i = choices.length - 1;
}
Shaders.configShadowResMul = choices[i];
par1GuiButton.displayString = "ShadowResMul: " + String.format("%.4f", Shaders.configShadowResMul);
Shaders.scheduleResizeShadow();
break;
}
case 17: /* Normal Map */ {
Shaders.configNormalMap = !Shaders.configNormalMap;
// displayString
par1GuiButton.displayString = "NormapMap: " + toStringOnOff(Shaders.configNormalMap);
mc.scheduleResourcesRefresh(); // schedule refresh texture
break;
}
case 18: /* Normal Map */ {
Shaders.configSpecularMap = !Shaders.configSpecularMap;
// displayString
par1GuiButton.displayString = "SpecularMap: " + toStringOnOff(Shaders.configSpecularMap);
mc.scheduleResourcesRefresh(); // schedule refresh texture
break;
}
case 19: /* old Lighting */ {
Shaders.configOldLighting = !Shaders.configOldLighting;
// displayString
par1GuiButton.displayString = "OldLighting: " + toStringOnOff(Shaders.configOldLighting);
Shaders.updateBlockLightLevel();
mc.renderGlobal.loadRenderers();
break;
}
case 11: /* texture filter */ {
Shaders.configTexMinFilB = (Shaders.configTexMinFilB + 1) % Shaders.texMinFilRange;
Shaders.configTexMinFilN = Shaders.configTexMinFilS = Shaders.configTexMinFilB;
par1GuiButton.displayString = "Tex Min: " + Shaders.texMinFilDesc[Shaders.configTexMinFilB];
ShadersTex.updateTextureMinMagFilter();
break;
}
case 12: /* texture filter */ {
Shaders.configTexMagFilN = (Shaders.configTexMagFilN + 1) % Shaders.texMagFilRange;
par1GuiButton.displayString = "Tex_n Mag: " + Shaders.texMagFilDesc[Shaders.configTexMagFilN];
ShadersTex.updateTextureMinMagFilter();
break;
}
case 13: /* texture filter */ {
Shaders.configTexMagFilS = (Shaders.configTexMagFilS + 1) % Shaders.texMagFilRange;
par1GuiButton.displayString = "Tex_s Mag: " + Shaders.texMagFilDesc[Shaders.configTexMagFilS];
ShadersTex.updateTextureMinMagFilter();
break;
}
case 14: /* shadow frustum clipping */ {
Shaders.configShadowClipFrustrum = !Shaders.configShadowClipFrustrum;
par1GuiButton.displayString =
"ShadowClipFrustrum: " + toStringOnOff(Shaders.configShadowClipFrustrum);
ShadersTex.updateTextureMinMagFilter();
break;
}
case 5: /* Open shaderpacks folder */
switch (net.minecraft.util.Util.getOSType()) {
case OSX:
{
try {
Runtime.getRuntime().exec(new String[] {
"/usr/bin/open", Shaders.shaderpacksdir.getAbsolutePath()
});
return;
} catch (IOException var7) {
var7.printStackTrace();
}
}
break;
case WINDOWS:
{
String var2 = String.format(
"cmd.exe /C start \"Open file\" \"%s\"",
new Object[] {Shaders.shaderpacksdir.getAbsolutePath()});
try {
Runtime.getRuntime().exec(var2);
return;
} catch (IOException var6) {
var6.printStackTrace();
}
}
break;
default:
break;
}
boolean var8 = false;
try {
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, new Object[] {(new File(mc.mcDataDir, Shaders.shaderpacksdirname)).toURI()
});
} catch (Throwable var5) {
var5.printStackTrace();
var8 = true;
}
if (var8) {
System.out.println("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) {
}
if (needReinit) {
needReinit = false;
Shaders.loadShaderPack();
Shaders.uninit();
this.mc.renderGlobal.loadRenderers();
}
this.mc.displayGuiScreen(this.parentGui); // displayGuiScreen
break;
default:
this.shaderList.actionPerformed(par1GuiButton); // actionPerformed
}
}
}
@Override
/**
* Draws the screen and all the components in it.
*/
public void drawScreen(int par1, int par2, float par3) {
drawDefaultBackground(); // background
this.shaderList.drawScreen(par1, par2, par3); // drawScreen
if (this.updateTimer <= 0) {
this.shaderList.updateList();
this.updateTimer += 20;
}
this.drawCenteredString(this.fontRendererObj, "Shaders ", this.width / 2, 16, 0xffffff);
this.drawCenteredString(this.fontRendererObj, " v" + Shaders.versionString, this.width - 40, 10, 0x808080);
// this.drawCenteredString(this.fontRenderer, "( Place zipped Shader files here. )", this.width / 4 + 10,
// this.height - 26, 0x808080);
super.drawScreen(par1, par2, par3);
}
@Override
/**
* Called from the main game loop to update the screen.
*/
public void updateScreen() {
super.updateScreen();
--this.updateTimer;
}
public Minecraft getMc() {
return this.mc;
}
public void drawCenteredString(String par1, int par2, int par3, int par4) {
this.drawCenteredString(this.fontRendererObj, par1, par2, par3, par4);
}
}
@@ -0,0 +1,75 @@
package com.gtnewhorizons.angelica.client;
import java.util.ArrayList;
import net.minecraft.client.gui.GuiSlot;
import net.minecraft.client.renderer.Tessellator;
class GuiSlotShaders extends GuiSlot {
private ArrayList shaderslist;
final GuiShaders shadersGui;
public GuiSlotShaders(GuiShaders par1GuiShaders) {
// super(par1GuiShaders.getMc(), par1GuiShaders.width / 2 + 20, par1GuiShaders.height, 40, par1GuiShaders.height
// - 70, 16);
super(
par1GuiShaders.getMc(),
par1GuiShaders.width / 2 + 20,
par1GuiShaders.height,
40,
par1GuiShaders.height - 70,
16);
this.shadersGui = par1GuiShaders;
this.shaderslist = Shaders.listofShaders();
}
public void updateList() {
this.shaderslist = Shaders.listofShaders();
}
@Override
/** getSize */
protected int getSize() {
return this.shaderslist.size();
}
@Override
/** elementClicked */
protected void elementClicked(int par1, boolean par2, int par3, int par4) {
Shaders.setShaderPack((String) shaderslist.get(par1));
shadersGui.needReinit = false;
Shaders.loadShaderPack();
Shaders.uninit();
}
@Override
/** isSelected */
protected boolean isSelected(int par1) {
return ((String) this.shaderslist.get(par1)).equals(Shaders.currentshadername);
}
@Override
/** getScrollBarX */
protected int getScrollBarX() {
return this.width - 6;
}
@Override
/** getContentHeight */
protected int getContentHeight() {
return this.getSize() * 18;
}
@Override
/** drawBackground */
protected void drawBackground() {
// this.shadersGui.drawDefaultBackground();
}
@Override
/** drawSlot */
protected void drawSlot(int par1, int par2, int par3, int par4, Tessellator par5, int par6, int par7) {
this.shadersGui.drawCenteredString(
(String) this.shaderslist.get(par1), this.shadersGui.width / 4 + 10, par3 + 1, 0xffffff);
}
}
@@ -1,80 +1,76 @@
package shadersmodcore.client;
import java.nio.ByteBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL30;
/**
*
* @author Nathanael Lane
*/
public class HFNoiseTexture {
public int texID;
public int textureUnit;
public HFNoiseTexture(int width, int height){
texID = GL11.glGenTextures();
textureUnit = 15;
byte[] image = genHFNoiseImage(width, height);
ByteBuffer data = BufferUtils.createByteBuffer(image.length);
data.put(image);
data.flip();
//GL13.glActiveTexture(GL13.GL_TEXTURE0 + this.textureUnit);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texID);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, width, height, 0,
GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, data);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
//GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
}
public int getID(){
return texID;
}
public void destroy(){
GL11.glDeleteTextures(texID);
texID = 0;
}
//from George Marsaglia's paper on XORshift PRNGs
private int random(int seed){
seed ^= (seed << 13);
seed ^= (seed >> 17);
seed ^= (seed << 5);
return seed;
}
private byte random(int x, int y, int z){
int seed = (random(x) + random(y * 19)) * random(z * 23) - z;
return (byte) (random(seed) % 128);
}
/*
* Just a random value for each pixel to get maximum frequency
*/
private byte[] genHFNoiseImage(int width, int height){
byte[] image = new byte[width * height * 3];
int index = 0;
for(int y = 0; y < height; y++){
for(int x = 0; x < width; x++){
for(int z = 1; z < 4; z++){
image[index++] = random(x, y, z);
}
}
}
return image;
}
}
package com.gtnewhorizons.angelica.client;
import java.nio.ByteBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
/**
*
* @author Nathanael Lane
*/
public class HFNoiseTexture {
public int texID;
public int textureUnit;
public HFNoiseTexture(int width, int height) {
texID = GL11.glGenTextures();
textureUnit = 15;
byte[] image = genHFNoiseImage(width, height);
ByteBuffer data = BufferUtils.createByteBuffer(image.length);
data.put(image);
data.flip();
// GL13.glActiveTexture(GL13.GL_TEXTURE0 + this.textureUnit);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texID);
GL11.glTexImage2D(
GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, width, height, 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, data);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
// GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
}
public int getID() {
return texID;
}
public void destroy() {
GL11.glDeleteTextures(texID);
texID = 0;
}
// from George Marsaglia's paper on XORshift PRNGs
private int random(int seed) {
seed ^= (seed << 13);
seed ^= (seed >> 17);
seed ^= (seed << 5);
return seed;
}
private byte random(int x, int y, int z) {
int seed = (random(x) + random(y * 19)) * random(z * 23) - z;
return (byte) (random(seed) % 128);
}
/*
* Just a random value for each pixel to get maximum frequency
*/
private byte[] genHFNoiseImage(int width, int height) {
byte[] image = new byte[width * height * 3];
int index = 0;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
for (int z = 1; z < 4; z++) {
image[index++] = random(x, y, z);
}
}
}
return image;
}
}
@@ -1,11 +1,10 @@
package shadersmodcore.client;
import java.io.InputStream;
public interface IShaderPack {
void close();
InputStream getResourceAsStream(String resName);
}
package com.gtnewhorizons.angelica.client;
import java.io.InputStream;
public interface IShaderPack {
void close();
InputStream getResourceAsStream(String resName);
}
Loaded 100 of 151 files, more files were not shown because too many files have changed in this diff. Show more