Release 2.6.26
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
import com.replaymod.gradle.preprocess.PreprocessTask
|
import com.replaymod.gradle.preprocess.PreprocessTask
|
||||||
import gg.essential.gradle.util.*
|
import gg.essential.gradle.util.*
|
||||||
|
import net.fabricmc.loom.task.RemapJarTask
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
id("io.github.goooler.shadow") apply false
|
id("com.gradleup.shadow") apply false
|
||||||
id("gg.essential.multi-version")
|
id("gg.essential.multi-version")
|
||||||
id("gg.essential.defaults.repo")
|
id("gg.essential.defaults.repo")
|
||||||
id("gg.essential.defaults.java")
|
id("gg.essential.defaults.java")
|
||||||
@@ -22,10 +23,14 @@ base.archivesName.set("replaymod")
|
|||||||
java.withSourcesJar()
|
java.withSourcesJar()
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
mixin.defaultRefmapName.set("mixins.replaymod.refmap.json")
|
|
||||||
noServerRunConfigs()
|
noServerRunConfigs()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!platform.isUnobfuscated) {
|
||||||
|
loom.mixin.useLegacyMixinAp = true
|
||||||
|
loom.mixin.defaultRefmapName.set("mixins.replaymod.refmap.json")
|
||||||
|
}
|
||||||
|
|
||||||
if (platform.isLegacyForge) {
|
if (platform.isLegacyForge) {
|
||||||
loom.runs.named("client") {
|
loom.runs.named("client") {
|
||||||
property("fml.coreMods.load", "com.replaymod.core.LoadingPlugin")
|
property("fml.coreMods.load", "com.replaymod.core.LoadingPlugin")
|
||||||
@@ -93,6 +98,7 @@ dependencies {
|
|||||||
12107 -> "0.128.1+1.21.7"
|
12107 -> "0.128.1+1.21.7"
|
||||||
12110 -> "0.135.0+1.21.10"
|
12110 -> "0.135.0+1.21.10"
|
||||||
12111 -> "0.139.5+1.21.11"
|
12111 -> "0.139.5+1.21.11"
|
||||||
|
26_01_00 -> "0.144.3+26.1"
|
||||||
else -> throw UnsupportedOperationException()
|
else -> throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
val fabricApiModules = mutableListOf(
|
val fabricApiModules = mutableListOf(
|
||||||
@@ -115,6 +121,10 @@ dependencies {
|
|||||||
if (mcVersion >= 12109) {
|
if (mcVersion >= 12109) {
|
||||||
fabricApiModules.add("resource-loader-v1")
|
fabricApiModules.add("resource-loader-v1")
|
||||||
}
|
}
|
||||||
|
if (mcVersion >= 26_01_00) {
|
||||||
|
fabricApiModules.remove("key-binding-api-v1")
|
||||||
|
fabricApiModules.add("key-mapping-api-v1")
|
||||||
|
}
|
||||||
for (module in fabricApiModules) {
|
for (module in fabricApiModules) {
|
||||||
val dep = fabricApi.module("fabric-$module", fabricApiVersion)
|
val dep = fabricApi.module("fabric-$module", fabricApiVersion)
|
||||||
modImplementation(dep)
|
modImplementation(dep)
|
||||||
@@ -169,11 +179,12 @@ dependencies {
|
|||||||
// FIXME hack because I don't know how to get this to be inherited properly
|
// FIXME hack because I don't know how to get this to be inherited properly
|
||||||
implementation(rootProject.files("libs/ReplayStudio/.gradle/prebundled-jars/viaVersion.jar"))
|
implementation(rootProject.files("libs/ReplayStudio/.gradle/prebundled-jars/viaVersion.jar"))
|
||||||
|
|
||||||
implementation(project(path = jGui.path, configuration = "namedElements"))
|
implementation(project(path = jGui.path, configuration = if (platform.isUnobfuscated) null else "namedElements"))
|
||||||
implementation(shadow("com.github.ReplayMod:lwjgl-utils:27dcd66")!!)
|
implementation(shadow("com.github.ReplayMod:lwjgl-utils:27dcd66")!!)
|
||||||
|
|
||||||
if (platform.isFabric) {
|
if (platform.isFabric) {
|
||||||
val modMenuVersion = when {
|
val modMenuVersion = when {
|
||||||
|
mcVersion >= 26_01_00 -> "18.0.0-alpha.8"
|
||||||
mcVersion >= 12111 -> "17.0.0-alpha.1"
|
mcVersion >= 12111 -> "17.0.0-alpha.1"
|
||||||
mcVersion >= 12110 -> "16.0.0-rc.1"
|
mcVersion >= 12110 -> "16.0.0-rc.1"
|
||||||
mcVersion >= 12107 -> "15.0.0-beta.3"
|
mcVersion >= 12107 -> "15.0.0-beta.3"
|
||||||
@@ -210,6 +221,7 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val irisVersion = when {
|
val irisVersion = when {
|
||||||
|
mcVersion >= 26_01_00 -> "1.10.8+26.1-fabric"
|
||||||
mcVersion >= 12000 -> "1.7.2+1.20.1"
|
mcVersion >= 12000 -> "1.7.2+1.20.1"
|
||||||
mcVersion >= 11600 -> "1.18.x-v1.2.0"
|
mcVersion >= 11600 -> "1.18.x-v1.2.0"
|
||||||
else -> null
|
else -> null
|
||||||
@@ -251,11 +263,13 @@ tasks.jar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.remapJar {
|
if (!platform.isUnobfuscated) {
|
||||||
if (platform.isFabric) {
|
tasks.named<RemapJarTask>("remapJar") {
|
||||||
addNestedDependencies.set(true)
|
if (platform.isFabric) {
|
||||||
|
addNestedDependencies.set(true)
|
||||||
|
}
|
||||||
|
archiveClassifier.set("obf")
|
||||||
}
|
}
|
||||||
archiveClassifier.set("obf")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val configureRelocationOutput = project.layout.buildDirectory.file("configureRelocation")
|
val configureRelocationOutput = project.layout.buildDirectory.file("configureRelocation")
|
||||||
@@ -318,9 +332,9 @@ val configureRelocation by tasks.registering {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val bundleJar by tasks.registering(com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar::class) {
|
val bundleJar by tasks.registering(com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar::class) {
|
||||||
from(tasks.remapJar.flatMap { it.archiveFile })
|
from((if (platform.isUnobfuscated) tasks.jar else tasks.named<RemapJarTask>("remapJar")).flatMap { it.archiveFile }.map { zipTree(it) })
|
||||||
|
|
||||||
from(jGui.tasks.remapJar.flatMap { it.archiveFile }.map { zipTree(it) }) {
|
from((if (platform.isUnobfuscated) jGui.tasks.jar else jGui.tasks.named<RemapJarTask>("remapJar")).flatMap { it.archiveFile }.map { zipTree(it) }) {
|
||||||
filesMatching("mixins.jgui.json") {
|
filesMatching("mixins.jgui.json") {
|
||||||
filter { it.replace("de.johni0702", "com.replaymod.lib.de.johni0702") }
|
filter { it.replace("de.johni0702", "com.replaymod.lib.de.johni0702") }
|
||||||
}
|
}
|
||||||
@@ -330,8 +344,8 @@ val bundleJar by tasks.registering(com.github.jengelman.gradle.plugins.shadow.ta
|
|||||||
}
|
}
|
||||||
relocate("de.johni0702", "com.replaymod.lib.de.johni0702")
|
relocate("de.johni0702", "com.replaymod.lib.de.johni0702")
|
||||||
|
|
||||||
manifest.inheritFrom(tasks.jar.get().manifest)
|
manifest.from(tasks.jar.get().manifest)
|
||||||
from(shade)
|
from(shade.elements.map { it.map { zipTree(it) } })
|
||||||
configurations = listOf(shadow)
|
configurations = listOf(shadow)
|
||||||
exclude("META-INF/INDEX.LIST", "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "module-info.class")
|
exclude("META-INF/INDEX.LIST", "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "module-info.class")
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
essential.defaults.loom=0
|
essential.defaults.loom=0
|
||||||
essential.defaults.loom.fabric-loader=net.fabricmc:fabric-loader:0.18.2
|
essential.defaults.loom.fabric-loader=net.fabricmc:fabric-loader:0.18.5
|
||||||
|
|
||||||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
||||||
# This is required to provide enough memory for the Minecraft decompilation process.
|
# This is required to provide enough memory for the Minecraft decompilation process.
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
2
jGui
2
jGui
Submodule jGui updated: 985836c3d0...b0e068383c
Submodule libs/ReplayStudio updated: 526f9aaf43...ca00f8101b
@@ -1,31 +1,43 @@
|
|||||||
import groovy.json.JsonOutput
|
import groovy.json.JsonOutput
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
|
import org.gradle.kotlin.dsl.support.serviceOf
|
||||||
|
import org.gradle.process.ExecOperations
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("gg.essential.multi-version.root")
|
id("gg.essential.multi-version.root")
|
||||||
id("gg.essential.loom") version "1.7.35" apply false
|
id("gg.essential.loom") version "1.15.48" apply false
|
||||||
|
kotlin("jvm") version "2.3.20" apply false
|
||||||
id("com.github.hierynomus.license") version "0.15.0"
|
id("com.github.hierynomus.license") version "0.15.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
val latestVersion = file("version.txt").readLines().first()
|
val latestVersion = file("version.txt").readLines().first()
|
||||||
var releaseCommit = command("git", "blame", "-p", "-l", "version.txt").first().split(" ").first()
|
var releaseCommit = providers.exec {
|
||||||
|
commandLine("git", "blame", "-p", "-l", "version.txt")
|
||||||
|
}.standardOutput.asText.map { it.trim().split("/n").first().split(" ").first() }.get()
|
||||||
if (latestVersion == "2.1.0") { // First version since change from tag-based
|
if (latestVersion == "2.1.0") { // First version since change from tag-based
|
||||||
releaseCommit = "35ac26e91689ac9bdf12dbb9902c452464a75108" // git rev-parse 1.12.2-2.1.0
|
releaseCommit = "35ac26e91689ac9bdf12dbb9902c452464a75108" // git rev-parse 1.12.2-2.1.0
|
||||||
}
|
}
|
||||||
val currentCommit = command("git", "rev-parse", "HEAD").first()
|
val currentCommit = providers.exec {
|
||||||
|
commandLine("git", "rev-parse", "HEAD")
|
||||||
|
}.standardOutput.asText.map { it.trim().split("/n").first() }.get()
|
||||||
if (releaseCommit == currentCommit) {
|
if (releaseCommit == currentCommit) {
|
||||||
version = latestVersion
|
version = latestVersion
|
||||||
} else {
|
} else {
|
||||||
val diff = command("git", "log", "--format=oneline", "$releaseCommit..$currentCommit").size
|
val diff = providers.exec {
|
||||||
|
commandLine("git", "log", "--format=oneline", "$releaseCommit..$currentCommit")
|
||||||
|
}.standardOutput.asText.map { it.trim().split("/n").size }.get()
|
||||||
version = "$latestVersion-$diff-g${currentCommit.substring(0, 7)}"
|
version = "$latestVersion-$diff-g${currentCommit.substring(0, 7)}"
|
||||||
}
|
}
|
||||||
if (gitDescribe().endsWith("*")) {
|
val dirty = providers.exec {
|
||||||
|
commandLine("git", "describe", "--always", "--dirty=*")
|
||||||
|
}.standardOutput.asText.map { it.trim().endsWith("*") }.get()
|
||||||
|
if (dirty) {
|
||||||
version = "$version-dirty"
|
version = "$version-dirty"
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "com.replaymod"
|
group = "com.replaymod"
|
||||||
|
|
||||||
val bundleJar by tasks.creating(Copy::class) {
|
val bundleJar by tasks.registering(Copy::class) {
|
||||||
into("$buildDir/libs")
|
into("$buildDir/libs")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,33 +50,23 @@ subprojects {
|
|||||||
if (name == "jGui" || name == "ReplayStudio") {
|
if (name == "jGui" || name == "ReplayStudio") {
|
||||||
return@subprojects
|
return@subprojects
|
||||||
}
|
}
|
||||||
val (_, minor) = name.split("-")[0].split(".")
|
val (major, minor, patch) = name.split("-")[0].split(".") + listOf("0")
|
||||||
val fabric = minor.toInt() >= 14 && !name.endsWith("-forge")
|
val mcVersion = major.toInt() * 10000 + minor.toInt() * 100 + patch.toInt()
|
||||||
|
val fabric = mcVersion >= 1_14_00 && !name.endsWith("-forge")
|
||||||
extra.set("loom.platform", if (fabric) "fabric" else "forge")
|
extra.set("loom.platform", if (fabric) "fabric" else "forge")
|
||||||
|
|
||||||
afterEvaluate {
|
afterEvaluate {
|
||||||
val projectBundleJar = project.tasks.findByName("bundleJar")
|
val projectBundleJar = project.tasks.findByName("bundleJar")
|
||||||
if (projectBundleJar != null && projectBundleJar.hasProperty("archivePath") && project.name != "core") {
|
if (projectBundleJar != null && projectBundleJar.hasProperty("archivePath") && project.name != "core") {
|
||||||
bundleJar.dependsOn(projectBundleJar)
|
bundleJar.configure {
|
||||||
bundleJar.from(projectBundleJar.withGroovyBuilder { getProperty("archivePath") })
|
dependsOn(projectBundleJar)
|
||||||
|
from(projectBundleJar.withGroovyBuilder { getProperty("archivePath") })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun gitDescribe(): String {
|
fun ExecOperations.command(vararg cmd: String): List<String> {
|
||||||
try {
|
|
||||||
val stdout = ByteArrayOutputStream()
|
|
||||||
exec {
|
|
||||||
commandLine("git", "describe", "--always", "--dirty=*")
|
|
||||||
standardOutput = stdout
|
|
||||||
}
|
|
||||||
return stdout.toString().trim()
|
|
||||||
} catch (e: Throwable) {
|
|
||||||
return "unknown"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun command(vararg cmd: Any): List<String> {
|
|
||||||
val stdout = ByteArrayOutputStream()
|
val stdout = ByteArrayOutputStream()
|
||||||
exec {
|
exec {
|
||||||
commandLine(*cmd)
|
commandLine(*cmd)
|
||||||
@@ -73,7 +75,10 @@ fun command(vararg cmd: Any): List<String> {
|
|||||||
return stdout.toString().trim().split("\n")
|
return stdout.toString().trim().split("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateVersionsJson(): Map<String, Any> {
|
fun generateVersionsJson(execOps: ExecOperations): Map<String, Any> {
|
||||||
|
fun command(vararg cmd: String): List<String> =
|
||||||
|
execOps.command(*cmd)
|
||||||
|
|
||||||
val versionComparator = compareBy<String>(
|
val versionComparator = compareBy<String>(
|
||||||
{ (it.split(".").getOrNull(0) ?: "0").toInt() },
|
{ (it.split(".").getOrNull(0) ?: "0").toInt() },
|
||||||
{ (it.split(".").getOrNull(1) ?: "0").toInt() },
|
{ (it.split(".").getOrNull(1) ?: "0").toInt() },
|
||||||
@@ -145,18 +150,24 @@ fun generateVersionsJson(): Map<String, Any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val writeVersionsJson by tasks.registering {
|
val writeVersionsJson by tasks.registering {
|
||||||
|
val execOps = project.serviceOf<ExecOperations>()
|
||||||
doLast {
|
doLast {
|
||||||
val versionsRoot = generateVersionsJson()
|
val versionsRoot = generateVersionsJson(execOps)
|
||||||
val versionsJson = JsonOutput.prettyPrint(JsonOutput.toJson(versionsRoot))
|
val versionsJson = JsonOutput.prettyPrint(JsonOutput.toJson(versionsRoot))
|
||||||
File("versions.json").writeText(versionsJson)
|
File("versions.json").writeText(versionsJson)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val doRelease by tasks.registering {
|
val doRelease by tasks.registering {
|
||||||
|
val execOps = project.serviceOf<ExecOperations>()
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
|
fun command(vararg cmd: String): List<String> =
|
||||||
|
execOps.command(*cmd)
|
||||||
|
|
||||||
// Parse version
|
// Parse version
|
||||||
val version = project.extra["releaseVersion"] as String
|
val version = project.extra["releaseVersion"] as String
|
||||||
if (gitDescribe().endsWith("*")) {
|
if (command("git", "describe", "--always", "--dirty=*").first().endsWith("*")) {
|
||||||
throw InvalidUserDataException("Git working tree is dirty. Make sure to commit all changes.")
|
throw InvalidUserDataException("Git working tree is dirty. Make sure to commit all changes.")
|
||||||
}
|
}
|
||||||
val (modVersion, preVersion) = if ("-b" in version) {
|
val (modVersion, preVersion) = if ("-b" in version) {
|
||||||
@@ -181,7 +192,7 @@ val doRelease by tasks.registering {
|
|||||||
command("git", "commit", "-m", commitMessage)
|
command("git", "commit", "-m", commitMessage)
|
||||||
|
|
||||||
// Generate versions.json content
|
// Generate versions.json content
|
||||||
val versionsRoot = generateVersionsJson()
|
val versionsRoot = generateVersionsJson(execOps)
|
||||||
val versionsJson = JsonOutput.prettyPrint(JsonOutput.toJson(versionsRoot))
|
val versionsJson = JsonOutput.prettyPrint(JsonOutput.toJson(versionsRoot))
|
||||||
|
|
||||||
// Switch to master branch to update versions.json
|
// Switch to master branch to update versions.json
|
||||||
@@ -191,11 +202,11 @@ val doRelease by tasks.registering {
|
|||||||
File("versions.json").writeText(versionsJson)
|
File("versions.json").writeText(versionsJson)
|
||||||
|
|
||||||
// Commit changes
|
// Commit changes
|
||||||
project.exec { commandLine("git", "add", "versions.json") }
|
command("git", "add", "versions.json")
|
||||||
project.exec { commandLine("git", "commit", "-m", "Update versions.json for $version") }
|
command("git", "commit", "-m", "Update versions.json for $version")
|
||||||
|
|
||||||
// Return to previous branch
|
// Return to previous branch
|
||||||
project.exec { commandLine("git", "checkout", "-") }
|
command("git", "checkout", "-")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,6 +215,7 @@ defaultTasks("bundleJar")
|
|||||||
preprocess {
|
preprocess {
|
||||||
strictExtraMappings.set(true)
|
strictExtraMappings.set(true)
|
||||||
|
|
||||||
|
val mc26_01_00 = createNode("26.1", 26_01_00, "yarn")
|
||||||
val mc12111 = createNode("1.21.11", 12111, "yarn")
|
val mc12111 = createNode("1.21.11", 12111, "yarn")
|
||||||
val mc12110 = createNode("1.21.10", 12110, "yarn")
|
val mc12110 = createNode("1.21.10", 12110, "yarn")
|
||||||
val mc12107 = createNode("1.21.7", 12107, "yarn")
|
val mc12107 = createNode("1.21.7", 12107, "yarn")
|
||||||
@@ -239,6 +251,7 @@ preprocess {
|
|||||||
val mc10800 = createNode("1.8", 10800, "srg")
|
val mc10800 = createNode("1.8", 10800, "srg")
|
||||||
val mc10710 = createNode("1.7.10", 10710, "srg")
|
val mc10710 = createNode("1.7.10", 10710, "srg")
|
||||||
|
|
||||||
|
mc26_01_00.link(mc12111, file("versions/mapping-fabric-26.1-1.21.11.txt"))
|
||||||
mc12111.link(mc12110, file("versions/mapping-fabric-1.21.11-1.21.10.txt"))
|
mc12111.link(mc12110, file("versions/mapping-fabric-1.21.11-1.21.10.txt"))
|
||||||
mc12110.link(mc12107, file("versions/mapping-fabric-1.21.10-1.21.7.txt"))
|
mc12110.link(mc12107, file("versions/mapping-fabric-1.21.10-1.21.7.txt"))
|
||||||
mc12107.link(mc12105)
|
mc12107.link(mc12105)
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ pluginManagement {
|
|||||||
maven("https://repo.essential.gg/repository/maven-public")
|
maven("https://repo.essential.gg/repository/maven-public")
|
||||||
}
|
}
|
||||||
plugins {
|
plugins {
|
||||||
id("gg.essential.multi-version.root") version "0.6.7"
|
id("gg.essential.multi-version.root") version "0.7.0-alpha.4"
|
||||||
id("io.github.goooler.shadow") version "8.1.7"
|
id("com.gradleup.shadow") version "9.4.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,6 +46,7 @@ val jGuiVersions = listOf(
|
|||||||
"1.21.7",
|
"1.21.7",
|
||||||
"1.21.10",
|
"1.21.10",
|
||||||
"1.21.11",
|
"1.21.11",
|
||||||
|
"26.1",
|
||||||
)
|
)
|
||||||
val replayModVersions = listOf(
|
val replayModVersions = listOf(
|
||||||
// "1.7.10",
|
// "1.7.10",
|
||||||
@@ -82,6 +83,7 @@ val replayModVersions = listOf(
|
|||||||
"1.21.7",
|
"1.21.7",
|
||||||
"1.21.10",
|
"1.21.10",
|
||||||
"1.21.11",
|
"1.21.11",
|
||||||
|
"26.1",
|
||||||
)
|
)
|
||||||
|
|
||||||
rootProject.buildFileName = "root.gradle.kts"
|
rootProject.buildFileName = "root.gradle.kts"
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
// 26.1+
|
||||||
@@ -57,12 +57,16 @@ public interface MinecraftAccessor {
|
|||||||
//$$ Queue<FutureTask<?>> getScheduledTasks();
|
//$$ Queue<FutureTask<?>> getScheduledTasks();
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ // Now in BlockableEventLoopAccessor
|
||||||
|
//#else
|
||||||
@Accessor("crashReport")
|
@Accessor("crashReport")
|
||||||
//#if MC>=11800
|
//#if MC>=11800
|
||||||
//$$ Supplier<CrashReport> getCrashReporter();
|
//$$ Supplier<CrashReport> getCrashReporter();
|
||||||
//#else
|
//#else
|
||||||
CrashReport getCrashReporter();
|
CrashReport getCrashReporter();
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC<11400
|
//#if MC<11400
|
||||||
//$$ @Accessor
|
//$$ @Accessor
|
||||||
|
|||||||
@@ -34,10 +34,6 @@ public abstract class MixinMinecraft
|
|||||||
extends ReentrantThreadExecutor<Runnable>
|
extends ReentrantThreadExecutor<Runnable>
|
||||||
//#endif
|
//#endif
|
||||||
implements MCVer.MinecraftMethodAccessor {
|
implements MCVer.MinecraftMethodAccessor {
|
||||||
//#if MC>=11400
|
|
||||||
public MixinMinecraft(String string_1) { super(string_1); }
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
@Shadow protected abstract void handleInputEvents();
|
@Shadow protected abstract void handleInputEvents();
|
||||||
|
|
||||||
@@ -59,7 +55,9 @@ public abstract class MixinMinecraft
|
|||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12100
|
//#if MC >= 26.1
|
||||||
|
//$$ private static final String GAME_RENDERER_RENDER = "Lnet/minecraft/client/Minecraft;renderFrame(Z)V";
|
||||||
|
//#elseif MC>=12100
|
||||||
//$$ private static final String GAME_RENDERER_RENDER = "Lnet/minecraft/client/render/GameRenderer;render(Lnet/minecraft/client/render/RenderTickCounter;Z)V";
|
//$$ private static final String GAME_RENDERER_RENDER = "Lnet/minecraft/client/render/GameRenderer;render(Lnet/minecraft/client/render/RenderTickCounter;Z)V";
|
||||||
//#else
|
//#else
|
||||||
private static final String GAME_RENDERER_RENDER = "Lnet/minecraft/client/render/GameRenderer;render(FJZ)V";
|
private static final String GAME_RENDERER_RENDER = "Lnet/minecraft/client/render/GameRenderer;render(FJZ)V";
|
||||||
@@ -136,4 +134,10 @@ public abstract class MixinMinecraft
|
|||||||
//$$ return wheel;
|
//$$ return wheel;
|
||||||
//$$ }
|
//$$ }
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ MixinMinecraft() { super(null, false); }
|
||||||
|
//#elseif MC>=11400
|
||||||
|
MixinMinecraft() { super(null); }
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,11 @@ public class Mixin_PostRenderWorldCalback {
|
|||||||
//$$ private void postRenderWorld(CallbackInfo ci) {
|
//$$ private void postRenderWorld(CallbackInfo ci) {
|
||||||
//$$ MatrixStack matrixStack = new MatrixStack();
|
//$$ MatrixStack matrixStack = new MatrixStack();
|
||||||
//#else
|
//#else
|
||||||
@Inject(method = "render", at = @At("RETURN"))
|
|
||||||
//#if MC>=11500
|
//#if MC>=11500
|
||||||
|
@Inject(method = "render", at = @At("RETURN"))
|
||||||
private void postRenderWorld(CallbackInfo ci, @Local(argsOnly = true) MatrixStack matrixStack) {
|
private void postRenderWorld(CallbackInfo ci, @Local(argsOnly = true) MatrixStack matrixStack) {
|
||||||
//#else
|
//#else
|
||||||
|
//$$ @Inject(method = "render", at = @At("RETURN"))
|
||||||
//$$ private void postRenderWorld(CallbackInfo ci) {
|
//$$ private void postRenderWorld(CallbackInfo ci) {
|
||||||
//$$ MatrixStack matrixStack = new MatrixStack();
|
//$$ MatrixStack matrixStack = new MatrixStack();
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -630,13 +630,24 @@ class Patterns {
|
|||||||
|
|
||||||
@Pattern
|
@Pattern
|
||||||
private static CrashException crashReportToException(MinecraftClient mc) {
|
private static CrashException crashReportToException(MinecraftClient mc) {
|
||||||
//#if MC>=11800
|
//#if MC >= 26.1
|
||||||
|
//$$ return new ReportedException(((com.replaymod.core.mixin.BlockableEventLoopAccessor) mc).getDelayedCrash().get());
|
||||||
|
//#elseif MC>=11800
|
||||||
//$$ return new CrashException(((MinecraftAccessor) mc).getCrashReporter().get());
|
//$$ return new CrashException(((MinecraftAccessor) mc).getCrashReporter().get());
|
||||||
//#else
|
//#else
|
||||||
return new CrashException(((MinecraftAccessor) mc).getCrashReporter());
|
return new CrashException(((MinecraftAccessor) mc).getCrashReporter());
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Pattern
|
||||||
|
private static boolean haveDelayedCrash(MinecraftClient mc) {
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ return ((com.replaymod.core.mixin.BlockableEventLoopAccessor) mc).getDelayedCrash() != null;
|
||||||
|
//#else
|
||||||
|
return ((MinecraftAccessor) mc).getCrashReporter() != null;
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
|
|
||||||
@Pattern
|
@Pattern
|
||||||
private static Vec3d getTrackedPosition(Entity entity) {
|
private static Vec3d getTrackedPosition(Entity entity) {
|
||||||
//#if MC>=11604
|
//#if MC>=11604
|
||||||
@@ -936,10 +947,7 @@ class Patterns {
|
|||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904 && MC<12006
|
||||||
//#if MC>=12006
|
|
||||||
//$$ @Pattern public void getPacketId() {}
|
|
||||||
//#else
|
|
||||||
@Pattern
|
@Pattern
|
||||||
public Integer getPacketId(NetworkState state, NetworkSide side, Packet<?> packet) throws Exception {
|
public Integer getPacketId(NetworkState state, NetworkSide side, Packet<?> packet) throws Exception {
|
||||||
//#if MC>=12002
|
//#if MC>=12002
|
||||||
@@ -948,8 +956,11 @@ class Patterns {
|
|||||||
return state.getPacketId(side, packet);
|
return state.getPacketId(side, packet);
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
//#else
|
||||||
|
//$$ @Pattern public void getPacketId() {}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
//#if MC>=10904 && MC < 26.1
|
||||||
@Pattern
|
@Pattern
|
||||||
public int UnloadChunkPacket_getX(UnloadChunkS2CPacket packet) {
|
public int UnloadChunkPacket_getX(UnloadChunkS2CPacket packet) {
|
||||||
//#if MC>=12002
|
//#if MC>=12002
|
||||||
@@ -968,7 +979,6 @@ class Patterns {
|
|||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
//#else
|
//#else
|
||||||
//$$ @Pattern public void getPacketId() {}
|
|
||||||
//$$ @Pattern public void UnloadChunkPacket_getZ() {}
|
//$$ @Pattern public void UnloadChunkPacket_getZ() {}
|
||||||
//$$ @Pattern public void UnloadChunkPacket_getX() {}
|
//$$ @Pattern public void UnloadChunkPacket_getX() {}
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -61,7 +61,11 @@ public class SchedulerImpl implements Scheduler {
|
|||||||
private final Thread mcThread = Thread.currentThread();
|
private final Thread mcThread = Thread.currentThread();
|
||||||
|
|
||||||
private ReplayModExecutor(String string_1) {
|
private ReplayModExecutor(String string_1) {
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ super(string_1, false);
|
||||||
|
//#else
|
||||||
super(string_1);
|
super(string_1);
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Runnable createTask(Runnable runnable) {
|
@Override public Runnable createTask(Runnable runnable) {
|
||||||
|
|||||||
@@ -27,25 +27,27 @@ public class ReplayTimer extends RenderTickCounter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
// This should be handled by Remap but it isn't (was handled before a9724e3).
|
// This should be handled by Remap but it isn't (was handled before a9724e3).
|
||||||
//#if MC>=11400
|
|
||||||
public
|
public
|
||||||
//#if MC>=11600
|
//#if MC>=11600
|
||||||
int
|
int
|
||||||
//#else
|
//#else
|
||||||
//$$ void
|
//$$ void
|
||||||
//#endif
|
//#endif
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ advanceGameTime(
|
||||||
|
//#elseif MC >= 1.14
|
||||||
beginRenderTick(
|
beginRenderTick(
|
||||||
//#else
|
//#else
|
||||||
//$$ public void updateTimer(
|
//$$ updateTimer(
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
long sysClock
|
long sysClock
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=12100
|
//#if MC>=12100 && MC < 26.1
|
||||||
//$$ , boolean tick
|
//$$ , boolean tick
|
||||||
//#endif
|
//#endif
|
||||||
) {
|
) {
|
||||||
//#if MC>=12100
|
//#if MC>=12100 && MC < 26.1
|
||||||
//$$ if (!tick) return 0;
|
//$$ if (!tick) return 0;
|
||||||
//#endif
|
//#endif
|
||||||
UpdatedCallback.EVENT.invoker().onUpdate();
|
UpdatedCallback.EVENT.invoker().onUpdate();
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ public class Util {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//#else
|
||||||
public static String getTileEntityId(BlockEntity tileEntity) {
|
public static String getTileEntityId(BlockEntity tileEntity) {
|
||||||
//#if MC>=12006
|
//#if MC>=12006
|
||||||
//$$ return net.minecraft.block.entity.BlockEntityType.getId(tileEntity.getType()).toString();
|
//$$ return net.minecraft.block.entity.BlockEntityType.getId(tileEntity.getType()).toString();
|
||||||
@@ -202,6 +204,7 @@ public class Util {
|
|||||||
return nbt.getString("id");
|
return nbt.getString("id");
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
//#endif
|
||||||
|
|
||||||
public interface IOCallable<R> {
|
public interface IOCallable<R> {
|
||||||
R call() throws IOException;
|
R call() throws IOException;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import net.minecraft.client.render.entity.LivingEntityRenderer;
|
|||||||
//#endif
|
//#endif
|
||||||
public abstract class MixinRenderLivingBase {
|
public abstract class MixinRenderLivingBase {
|
||||||
//#if MC>=11500
|
//#if MC>=11500
|
||||||
@Inject(method = "render", at = @At(
|
@Inject(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(
|
||||||
//#else
|
//#else
|
||||||
//#if FABRIC>=1
|
//#if FABRIC>=1
|
||||||
//$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
|
//$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.gl.Framebuffer;
|
import net.minecraft.client.gl.Framebuffer;
|
||||||
import net.minecraft.client.util.Window;
|
import net.minecraft.client.util.Window;
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11700
|
//#if MC>=11700
|
||||||
//$$ import net.minecraft.client.gl.WindowFramebuffer;
|
//$$ import net.minecraft.client.gl.WindowFramebuffer;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -88,7 +92,9 @@ public class VirtualWindow implements Closeable {
|
|||||||
guiFramebuffer.draw(framebufferWidth, framebufferHeight);
|
guiFramebuffer.draw(framebufferWidth, framebufferHeight);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12102
|
//#if MC >= 26.1
|
||||||
|
//$$ RenderSystem.flipFrame(null);
|
||||||
|
//#elseif MC>=12102
|
||||||
//$$ window.swapBuffers(null);
|
//$$ window.swapBuffers(null);
|
||||||
//#elseif MC>=11500
|
//#elseif MC>=11500
|
||||||
window.swapBuffers();
|
window.swapBuffers();
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
|||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
|
|
||||||
//#if MC>=12111
|
//#if MC>=12111 && MC < 26.1
|
||||||
//$$ import net.minecraft.client.render.CameraOverride;
|
//$$ import net.minecraft.client.render.CameraOverride;
|
||||||
//$$ import org.joml.Vector3f;
|
//$$ import org.joml.Vector3f;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -93,7 +93,8 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||||
Screen orgScreen = mc.currentScreen;
|
Screen orgScreen = mc.currentScreen;
|
||||||
boolean orgPauseOnLostFocus = mc.options.pauseOnLostFocus;
|
boolean orgPauseOnLostFocus = mc.options.pauseOnLostFocus;
|
||||||
//#if MC>=12106
|
//#if MC >= 26.1
|
||||||
|
//#elseif MC>=12106
|
||||||
//$$ boolean orgRenderHand = mc.gameRenderer.isRenderingPanorama();
|
//$$ boolean orgRenderHand = mc.gameRenderer.isRenderingPanorama();
|
||||||
//#else
|
//#else
|
||||||
boolean orgRenderHand = gameRenderer.getRenderHand();
|
boolean orgRenderHand = gameRenderer.getRenderHand();
|
||||||
@@ -103,7 +104,9 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
mc.options.pauseOnLostFocus = false; // do not want the pause menu to open if the window is unfocused
|
mc.options.pauseOnLostFocus = false; // do not want the pause menu to open if the window is unfocused
|
||||||
if (omnidirectional) {
|
if (omnidirectional) {
|
||||||
// makes no sense, we wouldn't even know where to put it
|
// makes no sense, we wouldn't even know where to put it
|
||||||
//#if MC>=12111
|
//#if MC >= 26.1
|
||||||
|
//$$ mc.gameRenderer.getMainCamera().enablePanoramicMode();
|
||||||
|
//#elseif MC>=12111
|
||||||
//$$ mc.gameRenderer.setCameraOverride(new CameraOverride(new Vector3f(mc.gameRenderer.getCamera().getHorizontalPlane())));
|
//$$ mc.gameRenderer.setCameraOverride(new CameraOverride(new Vector3f(mc.gameRenderer.getCamera().getHorizontalPlane())));
|
||||||
//#elseif MC>=12106
|
//#elseif MC>=12106
|
||||||
//$$ mc.gameRenderer.setRenderingPanorama(false);
|
//$$ mc.gameRenderer.setRenderingPanorama(false);
|
||||||
@@ -112,7 +115,11 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=12100
|
//#if MC >= 26.1
|
||||||
|
//$$ mc.gameRenderer.update(mc.getDeltaTracker(), true);
|
||||||
|
//$$ mc.gameRenderer.extract(mc.getDeltaTracker(), true);
|
||||||
|
//$$ mc.gameRenderer.render(mc.getDeltaTracker(), true);
|
||||||
|
//#elseif MC>=12100
|
||||||
//$$ mc.gameRenderer.render(mc.getRenderTickCounter(), true);
|
//$$ mc.gameRenderer.render(mc.getRenderTickCounter(), true);
|
||||||
//#elseif MC>=11400
|
//#elseif MC>=11400
|
||||||
mc.gameRenderer.render(partialTicks, finishTimeNano, true);
|
mc.gameRenderer.render(partialTicks, finishTimeNano, true);
|
||||||
@@ -127,7 +134,9 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
} finally {
|
} finally {
|
||||||
mc.currentScreen = orgScreen;
|
mc.currentScreen = orgScreen;
|
||||||
mc.options.pauseOnLostFocus = orgPauseOnLostFocus;
|
mc.options.pauseOnLostFocus = orgPauseOnLostFocus;
|
||||||
//#if MC>=12111
|
//#if MC >= 26.1
|
||||||
|
//$$ mc.gameRenderer.getMainCamera().disablePanoramicMode();
|
||||||
|
//#elseif MC>=12111
|
||||||
//$$ mc.gameRenderer.setCameraOverride(null);
|
//$$ mc.gameRenderer.setCameraOverride(null);
|
||||||
//#elseif MC>=12106
|
//#elseif MC>=12106
|
||||||
//$$ mc.gameRenderer.setRenderingPanorama(orgRenderHand);
|
//$$ mc.gameRenderer.setRenderingPanorama(orgRenderHand);
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import org.spongepowered.asm.mixin.gen.Accessor;
|
|||||||
|
|
||||||
//#if MC>=12106
|
//#if MC>=12106
|
||||||
//$$ import net.minecraft.client.gui.render.GuiRenderer;
|
//$$ import net.minecraft.client.gui.render.GuiRenderer;
|
||||||
//$$ import net.minecraft.client.gui.render.state.GuiRenderState;
|
|
||||||
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
||||||
//$$ import net.minecraft.client.util.Pool;
|
//$$ import net.minecraft.client.util.Pool;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -25,8 +24,13 @@ public interface GameRendererAccessor {
|
|||||||
//$$ Pool getPool();
|
//$$ Pool getPool();
|
||||||
//$$ @Accessor
|
//$$ @Accessor
|
||||||
//$$ GuiRenderer getGuiRenderer();
|
//$$ GuiRenderer getGuiRenderer();
|
||||||
|
//#if MC >= 26.1
|
||||||
//$$ @Accessor
|
//$$ @Accessor
|
||||||
//$$ GuiRenderState getGuiState();
|
//$$ net.minecraft.client.renderer.state.GameRenderState getGameRenderState();
|
||||||
|
//#else
|
||||||
|
//$$ @Accessor
|
||||||
|
//$$ net.minecraft.client.gui.render.state.GuiRenderState getGuiState();
|
||||||
|
//#endif
|
||||||
//$$ @Accessor
|
//$$ @Accessor
|
||||||
//$$ FogRenderer getFogRenderer();
|
//$$ FogRenderer getFogRenderer();
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
|
|
||||||
@Mixin(EntityRenderer.class)
|
@Mixin(EntityRenderer.class)
|
||||||
public abstract class Mixin_HideNameTags {
|
public abstract class Mixin_HideNameTags {
|
||||||
//#if MC>=11500
|
//#if MC >= 26.1
|
||||||
|
//$$ @Inject(method = "submitNameDisplay(Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/level/CameraRenderState;I)V", at = @At("HEAD"), cancellable = true)
|
||||||
|
//#elseif MC>=11500
|
||||||
@Inject(method = "renderLabelIfPresent", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "renderLabelIfPresent", at = @At("HEAD"), cancellable = true)
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
|
|||||||
@@ -40,6 +40,10 @@ import net.minecraft.util.crash.CrashException;
|
|||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ import net.minecraft.client.renderer.state.WindowRenderState;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12109
|
//#if MC>=12109
|
||||||
//$$ import net.minecraft.client.gui.screen.Overlay;
|
//$$ import net.minecraft.client.gui.screen.Overlay;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -289,11 +293,15 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
//#if MC>=11600
|
//#if MC>=11600
|
||||||
int elapsedTicks =
|
int elapsedTicks =
|
||||||
//#endif
|
//#endif
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ timer.advanceGameTime(
|
||||||
|
//#else
|
||||||
timer.beginRenderTick(
|
timer.beginRenderTick(
|
||||||
|
//#endif
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
MCVer.milliTime()
|
MCVer.milliTime()
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=12100
|
//#if MC>=12100 && MC < 26.1
|
||||||
//$$ , true
|
//$$ , true
|
||||||
//#endif
|
//#endif
|
||||||
);
|
);
|
||||||
@@ -508,6 +516,10 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void tick() {
|
private void tick() {
|
||||||
|
//#if MC >= 1.21.11
|
||||||
|
//$$ mc.getTextureManager().tick();
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800 && MC<11400
|
//#if MC>=10800 && MC<11400
|
||||||
//$$ try {
|
//$$ try {
|
||||||
//$$ mc.runTick();
|
//$$ mc.runTick();
|
||||||
@@ -525,6 +537,9 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
if (GLFW.glfwWindowShouldClose(window.getHandle()) || ((MinecraftAccessor) mc).getCrashReporter() != null) {
|
if (GLFW.glfwWindowShouldClose(window.getHandle()) || ((MinecraftAccessor) mc).getCrashReporter() != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ RenderSystem.pollEvents();
|
||||||
|
//#endif
|
||||||
|
|
||||||
pushMatrix();
|
pushMatrix();
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
@@ -630,7 +645,11 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
|
|
||||||
//#if MC>=12106
|
//#if MC>=12106
|
||||||
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ GuiRenderState guiRenderState = gameRenderer.getGameRenderState().guiRenderState;
|
||||||
|
//#else
|
||||||
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
||||||
|
//#endif
|
||||||
//$$ guiRenderState.clear();
|
//$$ guiRenderState.clear();
|
||||||
//#if MC>=12111
|
//#if MC>=12111
|
||||||
//$$ DrawContext drawContext = new DrawContext(mc, guiRenderState, mouseX, mouseY);
|
//$$ DrawContext drawContext = new DrawContext(mc, guiRenderState, mouseX, mouseY);
|
||||||
@@ -641,6 +660,16 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ WindowRenderState windowRenderState = gameRenderer.getGameRenderState().windowRenderState;
|
||||||
|
//$$ windowRenderState.width = window.getWidth();
|
||||||
|
//$$ windowRenderState.height = window.getHeight();
|
||||||
|
//$$ windowRenderState.guiScale = window.getGuiScale();
|
||||||
|
//$$ windowRenderState.appropriateLineWidth = window.getAppropriateLineWidth();
|
||||||
|
//$$ windowRenderState.isMinimized = window.isMinimized();
|
||||||
|
//$$ windowRenderState.isResized = false;
|
||||||
|
//#endif
|
||||||
|
|
||||||
if (mc.getOverlay() != null) {
|
if (mc.getOverlay() != null) {
|
||||||
Screen orgScreen = mc.currentScreen;
|
Screen orgScreen = mc.currentScreen;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1420,8 +1420,13 @@ public class FullReplaySender extends ChannelInboundHandlerAdapter implements Re
|
|||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
if (p instanceof UnloadChunkS2CPacket) {
|
if (p instanceof UnloadChunkS2CPacket) {
|
||||||
UnloadChunkS2CPacket packet = (UnloadChunkS2CPacket) p;
|
UnloadChunkS2CPacket packet = (UnloadChunkS2CPacket) p;
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ int x = packet.pos().x();
|
||||||
|
//$$ int z = packet.pos().z();
|
||||||
|
//#else
|
||||||
int x = packet.getX();
|
int x = packet.getX();
|
||||||
int z = packet.getZ();
|
int z = packet.getZ();
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
//$$ if (p instanceof S21PacketChunkData && ((S21PacketChunkData) p).getExtractedSize() == 0) {
|
//$$ if (p instanceof S21PacketChunkData && ((S21PacketChunkData) p).getExtractedSize() == 0) {
|
||||||
//$$ S21PacketChunkData packet = (S21PacketChunkData) p;
|
//$$ S21PacketChunkData packet = (S21PacketChunkData) p;
|
||||||
|
|||||||
@@ -817,7 +817,11 @@ public class ReplayHandler {
|
|||||||
//#endif
|
//#endif
|
||||||
//#if MC>=12106
|
//#if MC>=12106
|
||||||
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ GuiRenderState guiRenderState = gameRenderer.getGameRenderState().guiRenderState;
|
||||||
|
//#else
|
||||||
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
||||||
|
//#endif
|
||||||
//$$ guiRenderState.clear();
|
//$$ guiRenderState.clear();
|
||||||
//#if MC>=12111
|
//#if MC>=12111
|
||||||
//$$ int mouseX = (int) mc.mouse.getX() * window.getScaledWidth() / Math.max(window.getWidth(), 1);
|
//$$ int mouseX = (int) mc.mouse.getX() * window.getScaledWidth() / Math.max(window.getWidth(), 1);
|
||||||
@@ -859,7 +863,9 @@ public class ReplayHandler {
|
|||||||
//#endif
|
//#endif
|
||||||
popMatrix();
|
popMatrix();
|
||||||
|
|
||||||
//#if MC>=12102
|
//#if MC >= 26.1
|
||||||
|
//$$ RenderSystem.flipFrame(null);
|
||||||
|
//#elseif MC>=12102
|
||||||
//$$ mc.getWindow().swapBuffers(null);
|
//$$ mc.getWindow().swapBuffers(null);
|
||||||
//#elseif MC>=11500
|
//#elseif MC>=11500
|
||||||
mc.getWindow().swapBuffers();
|
mc.getWindow().swapBuffers();
|
||||||
|
|||||||
@@ -181,6 +181,9 @@ public class CameraEntity
|
|||||||
//#endif
|
//#endif
|
||||||
, false
|
, false
|
||||||
//#endif
|
//#endif
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ , mcIn.computeChatAbilities()
|
||||||
|
//#endif
|
||||||
);
|
);
|
||||||
//#if MC>=10900
|
//#if MC>=10900
|
||||||
setUuid(CAMERA_UUID);
|
setUuid(CAMERA_UUID);
|
||||||
|
|||||||
@@ -588,7 +588,7 @@ public class GuiHandler extends EventRegistrations {
|
|||||||
: EMPTY
|
: EMPTY
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11903
|
//#if MC>=11903
|
||||||
//$$ , DEFAULT_NARRATION_SUPPLIER
|
//$$ , ButtonWidget.DEFAULT_NARRATION_SUPPLIER
|
||||||
//#endif
|
//#endif
|
||||||
);
|
);
|
||||||
this.guiScreen = guiScreen;
|
this.guiScreen = guiScreen;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
|||||||
//#endif
|
//#endif
|
||||||
public abstract class MixinRenderLivingBase {
|
public abstract class MixinRenderLivingBase {
|
||||||
//#if FABRIC>=1
|
//#if FABRIC>=1
|
||||||
@Inject(method = "hasLabel", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "hasLabel(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true)
|
||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "canRenderName(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true)
|
//$$ @Inject(method = "canRenderName(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true)
|
||||||
//#endif
|
//#endif
|
||||||
@@ -45,7 +45,7 @@ public abstract class MixinRenderLivingBase {
|
|||||||
//#if MC>=12102
|
//#if MC>=12102
|
||||||
//$$ method = "updateRenderState(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;F)V",
|
//$$ method = "updateRenderState(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;F)V",
|
||||||
//#elseif MC>=11500
|
//#elseif MC>=11500
|
||||||
method = "render",
|
method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V",
|
||||||
//#else
|
//#else
|
||||||
//$$ method = "render(Lnet/minecraft/entity/LivingEntity;FFFFFF)V",
|
//$$ method = "render(Lnet/minecraft/entity/LivingEntity;FFFFFF)V",
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class MixinTileEntityEndPortalRenderer {
|
|||||||
static
|
static
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
//$$ @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
|
//$$ @Redirect(method = "render(Lnet/minecraft/block/entity/EndPortalBlockEntity;DDDFI)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
||||||
|
|||||||
@@ -11,13 +11,23 @@ import org.spongepowered.asm.mixin.injection.ModifyArg;
|
|||||||
|
|
||||||
@Mixin(TitleScreen.class)
|
@Mixin(TitleScreen.class)
|
||||||
public abstract class Mixin_MoveRealmsButton {
|
public abstract class Mixin_MoveRealmsButton {
|
||||||
//#if MC>=11901
|
//#if MC >= 26.1
|
||||||
|
//$$ private static final String REALMS_INIT = "Lcom/mojang/realmsclient/gui/screens/RealmsNotificationsScreen;init(II)V";
|
||||||
|
//#elseif MC>=11901
|
||||||
//$$ private static final String REALMS_INIT = "Lnet/minecraft/client/realms/gui/screen/RealmsNotificationsScreen;init(Lnet/minecraft/client/MinecraftClient;II)V";
|
//$$ private static final String REALMS_INIT = "Lnet/minecraft/client/realms/gui/screen/RealmsNotificationsScreen;init(Lnet/minecraft/client/MinecraftClient;II)V";
|
||||||
//#else
|
//#else
|
||||||
private static final String REALMS_INIT = "Lnet/minecraft/client/gui/screen/Screen;init(Lnet/minecraft/client/MinecraftClient;II)V";
|
private static final String REALMS_INIT = "Lnet/minecraft/client/gui/screen/Screen;init(Lnet/minecraft/client/MinecraftClient;II)V";
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@ModifyArg(method = "init", at = @At(value = "INVOKE", target = REALMS_INIT), index = 2)
|
@ModifyArg(
|
||||||
|
method = "init",
|
||||||
|
at = @At(value = "INVOKE", target = REALMS_INIT),
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ index = 1
|
||||||
|
//#else
|
||||||
|
index = 2
|
||||||
|
//#endif
|
||||||
|
)
|
||||||
private int adjustRealmsButton(int height) {
|
private int adjustRealmsButton(int height) {
|
||||||
String setting = ReplayMod.instance.getSettingsRegistry().get(Setting.MAIN_MENU_BUTTON);
|
String setting = ReplayMod.instance.getSettingsRegistry().get(Setting.MAIN_MENU_BUTTON);
|
||||||
if (MainMenuButtonPosition.valueOf(setting) == MainMenuButtonPosition.BIG) {
|
if (MainMenuButtonPosition.valueOf(setting) == MainMenuButtonPosition.BIG) {
|
||||||
|
|||||||
@@ -354,9 +354,9 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
|
|||||||
//$$ matrixStack.translate(-state.x2 / 2f, -state.y2, 100);
|
//$$ matrixStack.translate(-state.x2 / 2f, -state.y2, 100);
|
||||||
//$$ for (Pair<Vector2f, Vector2f> line : state.lines) {
|
//$$ for (Pair<Vector2f, Vector2f> line : state.lines) {
|
||||||
//#if MC>=12111
|
//#if MC>=12111
|
||||||
//$$ emitLine(matrixStack, vertexConsumers.getBuffer(RenderLayers.LINES), line.getLeft(), line.getRight(), state.color, state.lineWidth);
|
//$$ emitLine(matrixStack, this.vertexConsumers.getBuffer(RenderLayers.LINES), line.getLeft(), line.getRight(), state.color, state.lineWidth);
|
||||||
//#else
|
//#else
|
||||||
//$$ emitLine(matrixStack, vertexConsumers.getBuffer(RenderLayer.LINES), line.getLeft(), line.getRight(), state.color, state.lineWidth);
|
//$$ emitLine(matrixStack, this.vertexConsumers.getBuffer(RenderLayer.LINES), line.getLeft(), line.getRight(), state.color, state.lineWidth);
|
||||||
//#endif
|
//#endif
|
||||||
//$$ }
|
//$$ }
|
||||||
//$$ }
|
//$$ }
|
||||||
|
|||||||
@@ -4,6 +4,9 @@
|
|||||||
"mixins": [],
|
"mixins": [],
|
||||||
"server": [],
|
"server": [],
|
||||||
"client": [
|
"client": [
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ "BlockableEventLoopAccessor",
|
||||||
|
//#endif
|
||||||
"Mixin_ContextualKeyBindings",
|
"Mixin_ContextualKeyBindings",
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
"AbstractButtonWidgetAccessor",
|
"AbstractButtonWidgetAccessor",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2.6.25
|
2.6.26
|
||||||
|
|||||||
0
versions/1.14.4-forge/.gitkeep
Normal file
0
versions/1.14.4-forge/.gitkeep
Normal file
@@ -8,13 +8,9 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.render.Camera;
|
import net.minecraft.client.render.Camera;
|
||||||
import net.minecraft.client.render.ChunkRenderingDataPreparer;
|
import net.minecraft.client.render.ChunkRenderingDataPreparer;
|
||||||
import net.minecraft.client.render.Frustum;
|
import net.minecraft.client.render.Frustum;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
|
||||||
import net.minecraft.client.render.LightmapTextureManager;
|
|
||||||
import net.minecraft.client.render.WorldRenderer;
|
import net.minecraft.client.render.WorldRenderer;
|
||||||
import net.minecraft.client.render.chunk.ChunkBuilder;
|
import net.minecraft.client.render.chunk.ChunkBuilder;
|
||||||
import net.minecraft.client.render.chunk.ChunkRendererRegionBuilder;
|
import net.minecraft.client.render.chunk.ChunkRendererRegionBuilder;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import org.joml.Matrix4f;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
@@ -27,6 +23,11 @@ import java.util.concurrent.Future;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
|
||||||
|
//$$ import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||||
|
//#endif
|
||||||
|
|
||||||
@Mixin(WorldRenderer.class)
|
@Mixin(WorldRenderer.class)
|
||||||
public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
||||||
private ForceChunkLoadingHook replayModRender_hook;
|
private ForceChunkLoadingHook replayModRender_hook;
|
||||||
@@ -46,7 +47,8 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
|||||||
|
|
||||||
@Shadow @Final private ChunkRenderingDataPreparer field_45615;
|
@Shadow @Final private ChunkRenderingDataPreparer field_45615;
|
||||||
|
|
||||||
//#if MC>=12109
|
//#if MC >= 26.1
|
||||||
|
//#elseif MC>=12109
|
||||||
//$$ @Shadow protected abstract void method_74752(Camera par1, Frustum par2, boolean par3);
|
//$$ @Shadow protected abstract void method_74752(Camera par1, Frustum par2, boolean par3);
|
||||||
//#else
|
//#else
|
||||||
@Shadow protected abstract void setupTerrain(Camera par1, Frustum par2, boolean par3, boolean par4);
|
@Shadow protected abstract void setupTerrain(Camera par1, Frustum par2, boolean par3, boolean par4);
|
||||||
@@ -60,6 +62,10 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
|||||||
|
|
||||||
@Shadow protected abstract void applyFrustum(Frustum par1);
|
@Shadow protected abstract void applyFrustum(Frustum par1);
|
||||||
|
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ @WrapMethod(method = "update")
|
||||||
|
//$$ private void forceAllChunks(Camera camera, Operation<Void> original) {
|
||||||
|
//#else
|
||||||
@Inject(method = "render", at = @At(value = "INVOKE", target = SETUP_TERRAIN))
|
@Inject(method = "render", at = @At(value = "INVOKE", target = SETUP_TERRAIN))
|
||||||
private void forceAllChunks(
|
private void forceAllChunks(
|
||||||
CallbackInfo ci,
|
CallbackInfo ci,
|
||||||
@@ -68,10 +74,11 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
|||||||
//#endif
|
//#endif
|
||||||
@Local(argsOnly = true) Camera camera
|
@Local(argsOnly = true) Camera camera
|
||||||
) {
|
) {
|
||||||
if (replayModRender_hook == null) {
|
//#endif
|
||||||
return;
|
if (replayModRender_hook == null || FlawlessFrames.hasSodium()) {
|
||||||
}
|
//#if MC >= 26.1
|
||||||
if (FlawlessFrames.hasSodium()) {
|
//$$ original.call(camera);
|
||||||
|
//#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +92,9 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
|||||||
boolean areWeDoneYet = true;
|
boolean areWeDoneYet = true;
|
||||||
|
|
||||||
// Determine which chunks shall be visible
|
// Determine which chunks shall be visible
|
||||||
//#if MC>=12109
|
//#if MC >= 26.1
|
||||||
|
//$$ original.call(camera);
|
||||||
|
//#elseif MC>=12109
|
||||||
//$$ method_74752(camera, frustum, this.client.player.isSpectator());
|
//$$ method_74752(camera, frustum, this.client.player.isSpectator());
|
||||||
//#else
|
//#else
|
||||||
setupTerrain(camera, this.frustum, this.capturedFrustum != null, this.client.player.isSpectator());
|
setupTerrain(camera, this.frustum, this.capturedFrustum != null, this.client.player.isSpectator());
|
||||||
@@ -106,11 +115,13 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC < 26.1
|
||||||
// If that async processing did change the chunk graph, we need to re-apply the frustum (otherwise this is
|
// If that async processing did change the chunk graph, we need to re-apply the frustum (otherwise this is
|
||||||
// only done in the next setupTerrain call, which not happen this frame)
|
// only done in the next setupTerrain call, which not happen this frame)
|
||||||
if (renderingData.method_52836()) {
|
if (renderingData.method_52836()) {
|
||||||
this.applyFrustum((new Frustum(frustum)).coverBoxAroundSetPosition(8)); // call based on the one in setupTerrain
|
this.applyFrustum((new Frustum(frustum)).coverBoxAroundSetPosition(8)); // call based on the one in setupTerrain
|
||||||
}
|
}
|
||||||
|
//#endif
|
||||||
|
|
||||||
// Schedule all chunks which need rebuilding (we schedule even important rebuilds because we wait for
|
// Schedule all chunks which need rebuilding (we schedule even important rebuilds because we wait for
|
||||||
// all of them anyway and this way we can take advantage of threading)
|
// all of them anyway and this way we can take advantage of threading)
|
||||||
|
|||||||
0
versions/1.20.4/.gitkeep
Normal file
0
versions/1.20.4/.gitkeep
Normal file
@@ -31,8 +31,23 @@ public abstract class MixinRenderManager {
|
|||||||
copy.blockPos = org.blockPos;
|
copy.blockPos = org.blockPos;
|
||||||
copy.pos = org.pos;
|
copy.pos = org.pos;
|
||||||
copy.initialized = org.initialized;
|
copy.initialized = org.initialized;
|
||||||
|
//#if MC < 26.1
|
||||||
copy.entityPos = org.entityPos;
|
copy.entityPos = org.entityPos;
|
||||||
|
//#endif
|
||||||
copy.orientation.lookAlong((float) dx, (float) dy, (float) dz, 0f, 1f, 0f);
|
copy.orientation.lookAlong((float) dx, (float) dy, (float) dz, 0f, 1f, 0f);
|
||||||
|
//#if MC >= 26.1
|
||||||
|
//$$ copy.xRot = org.xRot;
|
||||||
|
//$$ copy.yRot = org.yRot;
|
||||||
|
//$$ copy.isPanoramicMode = org.isPanoramicMode;
|
||||||
|
//$$ copy.cullFrustum.set(org.cullFrustum);
|
||||||
|
//$$ copy.fogType = org.fogType;
|
||||||
|
//$$ copy.fogData = org.fogData;
|
||||||
|
//$$ copy.hudFov = org.hudFov;
|
||||||
|
//$$ copy.depthFar = org.depthFar;
|
||||||
|
//$$ copy.projectionMatrix.set(org.projectionMatrix);
|
||||||
|
//$$ copy.viewRotationMatrix.set(org.viewRotationMatrix);
|
||||||
|
//$$ copy.entityRenderState = org.entityRenderState;
|
||||||
|
//#endif
|
||||||
cameraRenderStateRef.set(copy);
|
cameraRenderStateRef.set(copy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
0
versions/1.21.2/.gitkeep
Normal file
0
versions/1.21.2/.gitkeep
Normal file
@@ -5,11 +5,14 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
|||||||
import com.llamalad7.mixinextras.sugar.Local;
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
import com.mojang.blaze3d.textures.GpuTexture;
|
import com.mojang.blaze3d.textures.GpuTexture;
|
||||||
import net.minecraft.client.gl.FramebufferManager;
|
import net.minecraft.client.gl.FramebufferManager;
|
||||||
import net.minecraft.client.gl.GlResourceManager;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
||||||
@Mixin(GlResourceManager.class)
|
//#if MC >= 26.1
|
||||||
|
//$$ @Mixin(targets = "com.mojang.blaze3d.opengl.GlCommandEncoder")
|
||||||
|
//#else
|
||||||
|
@Mixin(net.minecraft.client.gl.GlResourceManager.class)
|
||||||
|
//#endif
|
||||||
public class Mixin_FixCopyTextureToBuffer_DepthTexture {
|
public class Mixin_FixCopyTextureToBuffer_DepthTexture {
|
||||||
@WrapOperation(
|
@WrapOperation(
|
||||||
//#if MC>=12111
|
//#if MC>=12111
|
||||||
|
|||||||
0
versions/26.1/.gitkeep
Normal file
0
versions/26.1/.gitkeep
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package com.replaymod.core.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.CrashReport;
|
||||||
|
import net.minecraft.util.thread.BlockableEventLoop;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
@Mixin(BlockableEventLoop.class)
|
||||||
|
public interface BlockableEventLoopAccessor {
|
||||||
|
@Accessor
|
||||||
|
Supplier<CrashReport> getDelayedCrash();
|
||||||
|
}
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||||
|
import com.replaymod.render.hooks.ForceChunkLoadingHook;
|
||||||
|
import net.minecraft.client.renderer.chunk.ChunkSectionLayer;
|
||||||
|
import net.minecraft.client.renderer.chunk.SectionRenderDispatcher;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.locks.Condition;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
|
@Mixin(SectionRenderDispatcher.class)
|
||||||
|
public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHook.IBlockOnChunkRebuilds {
|
||||||
|
@Unique
|
||||||
|
private final ReentrantLock newMainThreadWorkLock = new ReentrantLock();
|
||||||
|
@Unique
|
||||||
|
private final Condition newMainThreadWork = newMainThreadWorkLock.newCondition();
|
||||||
|
|
||||||
|
@Unique
|
||||||
|
private long scheduledTasks = 0;
|
||||||
|
@Unique
|
||||||
|
private long doneTasks = 0;
|
||||||
|
|
||||||
|
@Inject(method = "schedule", at = @At(value = "INVOKE", target = "Lnet/minecraft/TracingExecutor;execute(Ljava/lang/Runnable;)V"))
|
||||||
|
private void incrementScheduledTasks(CallbackInfo ci) {
|
||||||
|
newMainThreadWorkLock.lock();
|
||||||
|
try {
|
||||||
|
scheduledTasks++;
|
||||||
|
} finally {
|
||||||
|
newMainThreadWorkLock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@WrapMethod(method = "runTask")
|
||||||
|
private void incrementDoneTasks(Operation<Void> original) {
|
||||||
|
try {
|
||||||
|
original.call();
|
||||||
|
} finally {
|
||||||
|
newMainThreadWorkLock.lock();
|
||||||
|
try {
|
||||||
|
doneTasks++;
|
||||||
|
newMainThreadWork.signalAll();
|
||||||
|
} finally {
|
||||||
|
newMainThreadWorkLock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Unique
|
||||||
|
private long prevTotalDoneTasks;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean uploadEverythingBlocking() {
|
||||||
|
while (true) {
|
||||||
|
long doneTasksAtStartOfLoop;
|
||||||
|
boolean allTasksDone;
|
||||||
|
newMainThreadWorkLock.lock();
|
||||||
|
try {
|
||||||
|
doneTasksAtStartOfLoop = doneTasks;
|
||||||
|
allTasksDone = scheduledTasks == doneTasks;
|
||||||
|
} finally {
|
||||||
|
newMainThreadWorkLock.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upload any buffers that may still be pending
|
||||||
|
uploadAllStagedAllocations();
|
||||||
|
|
||||||
|
// If there were no tasks still running, everything should be uploaded now.
|
||||||
|
if (allTasksDone) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise we need to wait for more work to come in
|
||||||
|
newMainThreadWorkLock.lock();
|
||||||
|
try {
|
||||||
|
while (doneTasksAtStartOfLoop == doneTasks) {
|
||||||
|
newMainThreadWork.awaitUninterruptibly();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
newMainThreadWorkLock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean doneAnything = doneTasks != prevTotalDoneTasks;
|
||||||
|
prevTotalDoneTasks = doneTasks;
|
||||||
|
return doneAnything;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Unique
|
||||||
|
private void uploadAllStagedAllocations() {
|
||||||
|
copyLock.lock();
|
||||||
|
try {
|
||||||
|
// MC will only allow one buffer resize per frame (presumably to avoid lag spikes), so we'll simply call
|
||||||
|
// the method as often as there are buffers (there's only a fixed amount of 3, one per ChunkSectionLayer)
|
||||||
|
for (int i = 0; i < chunkUberBuffers.size(); i++) {
|
||||||
|
uploadGlobalGeomBuffersToGPU();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
copyLock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private ReentrantLock copyLock;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
public abstract void uploadGlobalGeomBuffersToGPU();
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private Map<ChunkSectionLayer, ?> chunkUberBuffers;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.renderer.entity.player.AvatarRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(AvatarRenderer.class)
|
||||||
|
public abstract class Mixin_HideNameTags_PlayerEntity {
|
||||||
|
// 1.21.11 and below
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
|
||||||
|
@Mixin(GameRenderer.class)
|
||||||
|
public abstract class Mixin_Omnidirectional_Camera {
|
||||||
|
// Now handled by Camera.enablePanoramicMode
|
||||||
|
// 1.21.11 and below
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.render.capturer.CubicOpenGlFrameCapturer;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.Camera;
|
||||||
|
import org.joml.Quaternionf;
|
||||||
|
import org.joml.Vector3f;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
||||||
|
//#if MC>=12005
|
||||||
|
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
||||||
|
import org.joml.Matrix4f;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
//#if MC>=11500
|
||||||
|
//#else
|
||||||
|
//$$ import org.lwjgl.opengl.GL11;
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||||
|
import static org.joml.Math.PI_OVER_2_f;
|
||||||
|
import static org.joml.Math.PI_f;
|
||||||
|
|
||||||
|
@Mixin(Camera.class)
|
||||||
|
public abstract class Mixin_Omnidirectional_Rotation {
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private static Vector3f FORWARDS;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private static Vector3f UP;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private static Vector3f LEFT;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private Quaternionf rotation;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private Vector3f forwards;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private Vector3f up;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
private Vector3f left;
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
private int matrixPropertiesDirty;
|
||||||
|
|
||||||
|
@Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;alignWithEntity(F)V", shift = At.Shift.AFTER))
|
||||||
|
private void replayModRender_setupCubicFrameRotation(CallbackInfo ci) {
|
||||||
|
if (getHandler() == null || !(getHandler().data instanceof CubicOpenGlFrameCapturer.Data)) return;
|
||||||
|
CubicOpenGlFrameCapturer.Data data = (CubicOpenGlFrameCapturer.Data) getHandler().data;
|
||||||
|
|
||||||
|
switch (data) {
|
||||||
|
case FRONT:
|
||||||
|
break;
|
||||||
|
case RIGHT:
|
||||||
|
this.rotation.rotateY(-PI_OVER_2_f);
|
||||||
|
break;
|
||||||
|
case BACK:
|
||||||
|
this.rotation.rotateY(PI_f);
|
||||||
|
break;
|
||||||
|
case LEFT:
|
||||||
|
this.rotation.rotateY(PI_OVER_2_f);
|
||||||
|
break;
|
||||||
|
case TOP:
|
||||||
|
this.rotation.rotateX(PI_OVER_2_f);
|
||||||
|
break;
|
||||||
|
case BOTTOM:
|
||||||
|
this.rotation.rotateX(-PI_OVER_2_f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// From setRotation
|
||||||
|
FORWARDS.rotate(this.rotation, this.forwards);
|
||||||
|
UP.rotate(this.rotation, this.up);
|
||||||
|
LEFT.rotate(this.rotation, this.left);
|
||||||
|
this.matrixPropertiesDirty |= 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Unique
|
||||||
|
private EntityRendererHandler getHandler() {
|
||||||
|
return ((EntityRendererHandler.IEntityRenderer) getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||||
|
import com.replaymod.render.RenderSettings;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import com.replaymod.replay.camera.CameraEntity;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import static com.replaymod.core.versions.MCVer.*;
|
||||||
|
|
||||||
|
//#if MC>=11400
|
||||||
|
import net.minecraft.client.Camera;
|
||||||
|
//#else
|
||||||
|
//$$ import net.minecraft.client.renderer.EntityRenderer;
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
@Mixin(value = Camera.class)
|
||||||
|
public abstract class Mixin_StabilizeCamera {
|
||||||
|
@WrapOperation(method = "alignWithEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setRotation(FF)V"))
|
||||||
|
private void replayModRender_stabilizeCamera(Camera instance, float yRot, float xRot, Operation<Void> original) {
|
||||||
|
if (getHandler() != null) {
|
||||||
|
RenderSettings settings = getHandler().getSettings();
|
||||||
|
|
||||||
|
if (settings.isStabilizeYaw()) {
|
||||||
|
yRot = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.isStabilizePitch()) {
|
||||||
|
xRot = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Roll handled in MixinCamera
|
||||||
|
}
|
||||||
|
|
||||||
|
original.call(instance, yRot, xRot);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Unique
|
||||||
|
private EntityRendererHandler getHandler() {
|
||||||
|
return ((EntityRendererHandler.IEntityRenderer) getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.render.capturer.StereoscopicOpenGlFrameCapturer;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.Camera;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||||
|
|
||||||
|
@Mixin(Camera.class)
|
||||||
|
public abstract class Mixin_Stereoscopic_Camera {
|
||||||
|
@Shadow
|
||||||
|
protected abstract void move(float forwards, float up, float right);
|
||||||
|
|
||||||
|
@Inject(method = "alignWithEntity", at = @At("RETURN"))
|
||||||
|
private void replayModRender_setupStereoscopicProjection(CallbackInfo ci) {
|
||||||
|
if (getHandler() == null || !(getHandler().data instanceof StereoscopicOpenGlFrameCapturer.Data)) return;
|
||||||
|
StereoscopicOpenGlFrameCapturer.Data data = (StereoscopicOpenGlFrameCapturer.Data) getHandler().data;
|
||||||
|
|
||||||
|
move(0f, 0f, 0.1f * (data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? -1 : 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Unique
|
||||||
|
private EntityRendererHandler getHandler() {
|
||||||
|
return ((EntityRendererHandler.IEntityRenderer) getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.replaymod.replay.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import com.replaymod.replay.camera.CameraEntity;
|
||||||
|
import net.minecraft.client.Camera;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||||
|
|
||||||
|
import static com.replaymod.core.versions.MCVer.getMinecraft;
|
||||||
|
|
||||||
|
@Mixin(Camera.class)
|
||||||
|
public class MixinCamera {
|
||||||
|
@Shadow
|
||||||
|
private @Nullable Entity entity;
|
||||||
|
|
||||||
|
@ModifyArg(method = "setRotation", at = @At(value = "INVOKE", target = "Lorg/joml/Quaternionf;rotationYXZ(FFF)Lorg/joml/Quaternionf;"), index = 2)
|
||||||
|
private float applyRoll(float rotZ) {
|
||||||
|
Entity entity = this.entity;
|
||||||
|
if (!(entity instanceof CameraEntity)) return rotZ;
|
||||||
|
|
||||||
|
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||||
|
if (handler != null && handler.getSettings().isStabilizeRoll()) return rotZ;
|
||||||
|
|
||||||
|
return rotZ - ((CameraEntity) entity).roll * (float) Math.PI / 180f;
|
||||||
|
}
|
||||||
|
}
|
||||||
57
versions/26.1/src/main/resources/fabric.mod.json
Normal file
57
versions/26.1/src/main/resources/fabric.mod.json
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"id": "replaymod",
|
||||||
|
"version": "${version}",
|
||||||
|
|
||||||
|
"name": "Replay Mod",
|
||||||
|
"description": "A Mod which allows you to record, replay and share your Minecraft experience.",
|
||||||
|
"authors": [
|
||||||
|
"CrushedPixel",
|
||||||
|
"johni0702"
|
||||||
|
],
|
||||||
|
"contact": {
|
||||||
|
"homepage": "https://replaymod.com/",
|
||||||
|
"sources": "https://github.com/ReplayMod/ReplayMod"
|
||||||
|
},
|
||||||
|
|
||||||
|
"license": "GPL-3.0-or-later",
|
||||||
|
"icon": "assets/replaymod/favicon_logo.png",
|
||||||
|
|
||||||
|
"environment": "client",
|
||||||
|
"entrypoints": {
|
||||||
|
"client": [
|
||||||
|
"com.replaymod.core.ReplayModBackend"
|
||||||
|
],
|
||||||
|
"modmenu": [
|
||||||
|
"com.replaymod.core.gui.ModMenuApiImpl"
|
||||||
|
],
|
||||||
|
"frex_flawless_frames": [
|
||||||
|
"com.replaymod.render.utils.FlawlessFrames::registerConsumer"
|
||||||
|
],
|
||||||
|
"preLaunch": [
|
||||||
|
"com.replaymod.core.DummyChainLoadEntryPoint",
|
||||||
|
"com.replaymod.core.MixinExtrasInit"
|
||||||
|
],
|
||||||
|
"mm:early_risers": [
|
||||||
|
"com.replaymod.core.ReplayModMMLauncher"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mixins": [
|
||||||
|
"mixins.jgui.json",
|
||||||
|
"mixins.nonmmlauncher.replaymod.json"
|
||||||
|
],
|
||||||
|
|
||||||
|
"depends": {
|
||||||
|
"fabricloader": ">=0.18.5",
|
||||||
|
"fabric-networking-api-v1": "*",
|
||||||
|
"fabric-key-mapping-api-v1": "*",
|
||||||
|
"fabric-resource-loader-v0": "*"
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom": {
|
||||||
|
"mm:early_risers": [
|
||||||
|
"com.replaymod.core.ReplayModMMLauncher"
|
||||||
|
],
|
||||||
|
"modmenu:clientsideOnly": true
|
||||||
|
}
|
||||||
|
}
|
||||||
32
versions/mapping-fabric-26.1-1.21.11.txt
Normal file
32
versions/mapping-fabric-26.1-1.21.11.txt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
net.minecraft.client.Minecraft delayCrash() setCrashReportSupplier()
|
||||||
|
net.minecraft.client.gui.components.ChatComponent addClientSystemMessage() addMessage()
|
||||||
|
net.minecraft.client.renderer.state.gui.GuiRenderState reset() clear()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState net.minecraft.client.gui.render.state.special.SpecialGuiElementRenderState
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState x0() x1()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState x1() x2()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState y0() y1()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState y1() y2()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState scissorArea() comp_4128()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState scale() comp_4133()
|
||||||
|
net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState getBounds() createBounds()
|
||||||
|
net.minecraft.client.renderer.state.level.QuadParticleRenderState net.minecraft.client.particle.BillboardParticleSubmittable
|
||||||
|
com.mojang.blaze3d.platform.WindowEventHandler resizeGui() onResolutionChanged()
|
||||||
|
net.minecraft.client.renderer.LevelRenderer lambda$addSkyPass$0() method_62215()
|
||||||
|
net.minecraft.client.renderer.state.gui.GuiRenderState net.minecraft.client.gui.render.state.GuiRenderState
|
||||||
|
net.minecraft.client.renderer.state.level.CameraRenderState net.minecraft.client.render.state.CameraRenderState
|
||||||
|
net.minecraft.client.gui.Gui extractRenderState() render()
|
||||||
|
net.minecraft.client.gui.Gui extractItemHotbar() renderHotbar()
|
||||||
|
net.minecraft.client.gui.GuiGraphicsExtractor net.minecraft.client.gui.DrawContext
|
||||||
|
net.minecraft.client.gui.GuiGraphicsExtractor guiRenderState state
|
||||||
|
net.minecraft.client.gui.components.AbstractButton extractContents() drawIcon()
|
||||||
|
net.minecraft.client.gui.components.Renderable extractRenderState() render()
|
||||||
|
net.minecraft.client.gui.screens.Screen extractRenderStateWithTooltipAndSubtitles() renderWithTooltip()
|
||||||
|
|
||||||
|
net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry
|
||||||
|
net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry clientboundPlay()Lnet/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry; playS2C()
|
||||||
|
net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry clientboundConfiguration()Lnet/fabricmc/fabric/api/networking/v1/PayloadTypeRegistry; configurationS2C()
|
||||||
|
net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
|
||||||
|
net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper registerKeyMapping() registerKeyBinding(Lnet/minecraft/client/option/KeyBinding;)Lnet/minecraft/client/option/KeyBinding;
|
||||||
|
net.fabricmc.fabric.api.client.screen.v1.Screens net.fabricmc.fabric.api.client.screen.v1.Screens
|
||||||
|
net.fabricmc.fabric.api.client.screen.v1.Screens getWidgets() getButtons(Lnet/minecraft/client/gui/screen/Screen;)Ljava/util/List;
|
||||||
|
|
||||||
Reference in New Issue
Block a user