Compare commits
83 Commits
1.9.4-2.1.
...
1.12.2-2.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec50efec10 | ||
|
|
d7e3c4d242 | ||
|
|
b176dd9879 | ||
|
|
a090a00360 | ||
|
|
ddeaf37e8e | ||
|
|
d0e4475b40 | ||
|
|
00adf7f083 | ||
|
|
7458e46e07 | ||
|
|
ed6e11f106 | ||
|
|
5f2366e49d | ||
|
|
f6b4ea015d | ||
|
|
638cc59097 | ||
|
|
3a2abf05cb | ||
|
|
0f004537af | ||
|
|
dc1bc1ee8e | ||
|
|
87335cd243 | ||
|
|
06bebda557 | ||
|
|
430a5044f5 | ||
|
|
e7ce03e85f | ||
|
|
bab1d3463e | ||
|
|
2dce4eb54a | ||
|
|
0ed9a5533e | ||
|
|
c07080650a | ||
|
|
4ac418cdd5 | ||
|
|
42aa0d9b61 | ||
|
|
117dc6191f | ||
|
|
903762f042 | ||
|
|
f9b6fd1ced | ||
|
|
9592c6b8ea | ||
|
|
5f7e4fd9dd | ||
|
|
e70ef7a601 | ||
|
|
b0a65b1103 | ||
|
|
134c10f39e | ||
|
|
fd7da227a0 | ||
|
|
701e8e8bba | ||
|
|
c8dc70af56 | ||
|
|
db1717ffdd | ||
|
|
d7dc2badf8 | ||
|
|
b1c6098205 | ||
|
|
caf6051ab7 | ||
|
|
b8b4f167ef | ||
|
|
f2755f6e1f | ||
|
|
cfb990ad43 | ||
|
|
b1a2826cb4 | ||
|
|
0d6c1caffc | ||
|
|
13bb0bde13 | ||
|
|
5257a412a5 | ||
|
|
689f897930 | ||
|
|
922c039e43 | ||
|
|
0b462280fc | ||
|
|
d56fa9b88f | ||
|
|
7c719e03cc | ||
|
|
cae95d1c8f | ||
|
|
67b7872c4d | ||
|
|
9b04d317c5 | ||
|
|
a6ffae2148 | ||
|
|
6109960d4a | ||
|
|
4dcecc5697 | ||
|
|
bef5e41a8d | ||
|
|
6ecb87e8dd | ||
|
|
921c9e0098 | ||
|
|
5dd31f4cac | ||
|
|
2a47f579a9 | ||
|
|
96b2904e4b | ||
|
|
cda8493df1 | ||
|
|
0c36022b47 | ||
|
|
325d041bd9 | ||
|
|
33cb1405d5 | ||
|
|
b6cf42c3be | ||
|
|
c6dec95a57 | ||
|
|
503b308043 | ||
|
|
7b491d188d | ||
|
|
fb4140a123 | ||
|
|
905ae75330 | ||
|
|
2428c01c9c | ||
|
|
260720d5ba | ||
|
|
372206fdff | ||
|
|
58b7c44a33 | ||
|
|
9f7ccb9d07 | ||
|
|
ce313596db | ||
|
|
b1661e359a | ||
|
|
7cc0ee523a | ||
|
|
09f167f10e |
@@ -17,7 +17,7 @@ buildscript {
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
||||
classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
@@ -34,9 +34,9 @@ archivesBaseName = "replaymod"
|
||||
|
||||
minecraft {
|
||||
coreMod = 'com.replaymod.core.LoadingPlugin'
|
||||
version = '1.9.4-12.17.0.1976'
|
||||
version = '1.12.2-14.23.0.2486'
|
||||
runDir = "eclipse"
|
||||
mappings = "snapshot_20160518"
|
||||
mappings = "snapshot_20170615"
|
||||
replace '@MOD_VERSION@', project.version
|
||||
// Includes intentional whitespace to stop Forge from declaring the mod to be compatible with
|
||||
// a newer srg-compatible MC version (that may be using a different protocol version)
|
||||
@@ -69,7 +69,7 @@ dependencies {
|
||||
|
||||
shade 'org.aspectj:aspectjrt:1.8.2'
|
||||
|
||||
shade 'com.github.replaymod:ReplayStudio:14daa88'
|
||||
shade 'com.github.replaymod:ReplayStudio:b040763'
|
||||
|
||||
testCompile 'junit:junit:4.11'
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
fec83601d2da127234728a8fffb429d0c4a59587452834da203163e6a3f941db /ca/weblite/java-objc-bridge/1.0.0/java-objc-bridge-1.0.0.jar
|
||||
399518acc1b1d969e2bd7390b76ffb016a3354045e1c4c82fe747db45d29c27d /ca/weblite/java-objc-bridge/1.0.0/java-objc-bridge-1.0.0.pom
|
||||
0ab7e4217b2702316adceabd4c1dfca0250dbe33c22e08c98b433939207edfc0 /com/cloudbees/cloudbees-oss-parent/1/cloudbees-oss-parent-1.pom
|
||||
e6509db2167c983d254d3530c66a060443e91a6ca38df9fdc4ef2a88ad813fa5 /com/cloudbees/diff4j/1.1/diff4j-1.1.jar
|
||||
a09a4ac520f9ec5ccd16195272fd8ed4c667285f9e129da5acf633bb21a7d174 /com/cloudbees/diff4j/1.1/diff4j-1.1.pom
|
||||
@@ -14,8 +16,8 @@ f98b3e07c6b6a32dd6f9f70f5cef4ac9be42a9a6c850ceb8f33767da94706635 /com/github/joh
|
||||
03e3dff7f9b3ac6cd3b87684fd36a2f6996a4b164a2f8fab9c22c01cb7bfb84b /com/github/johni0702/gradle-reproducible-builds-plugin/a524ada/gradle-reproducible-builds-plugin-a524ada.pom
|
||||
75ccc0e24d37ed5b8916e1bcffad1e067c2b1cfa21b635287f968db5c3c1963a /com/github/jponge/lzma-java/1.3/lzma-java-1.3.jar
|
||||
fbcba81b21a8bc3c0761e4798fa05285444b43d681c03c9af49f9b2e1ecb0184 /com/github/jponge/lzma-java/1.3/lzma-java-1.3.pom
|
||||
9de10955f2f5e43c982fab9c88b9fb5a7984e4be08f8665294920fa866dc38e2 /com/github/replaymod/ReplayStudio/14daa88/ReplayStudio-14daa88.jar
|
||||
2a48580e2a41a35303b5d661a8870f4adaefbd5216af1cbfcf3dd3ca1b906c61 /com/github/replaymod/ReplayStudio/14daa88/ReplayStudio-14daa88.pom
|
||||
6210f02aef75870d95f3edd13489ec4156f19e0c5816987fa98d24b965714c4a /com/github/replaymod/ReplayStudio/b040763/ReplayStudio-b040763.jar
|
||||
b61aa2c442a62059f632526b82016f9c8ca05f91dd145b049a19a1adcf516407 /com/github/replaymod/ReplayStudio/b040763/ReplayStudio-b040763.pom
|
||||
c6ebd74cd6108b8c372c95b842725ee5bd6d3303ba26cb00f18bc92f80b47956 /com/github/tony19/named-regexp/0.2.3/named-regexp-0.2.3.jar
|
||||
7cdd89a892927998beab59398ef073232588f6e83e411cf4f0905833bf300487 /com/github/tony19/named-regexp/0.2.3/named-regexp-0.2.3.pom
|
||||
47c625c83a8cf97b8bbdff2acde923ff8fd3174e62aabcfc5d1b86692594ffba /com/google/api-client/google-api-client/1.22.0/google-api-client-1.22.0.jar
|
||||
@@ -38,6 +40,9 @@ c885ce34249682bc0236b4a7d56efcc12048e6135a5baf7a9cde8ad8cda13fcd /com/google/cod
|
||||
894da89d477e805389c9df1d6fa8bd552285aed56a399d5749213520a7c74054 /com/google/code/gson/gson/2.1/gson-2.1.pom
|
||||
c0328cd07ca9e363a5acd00c1cf4afe8cf554bd6d373834981ba05cebec687fb /com/google/code/gson/gson/2.2.4/gson-2.2.4.jar
|
||||
ae984d5d19894ce6dc4689866eaa12f8fc31409113e60ee3b44853b8ac4fd380 /com/google/code/gson/gson/2.2.4/gson-2.2.4.pom
|
||||
c6221763bd79c4f1c3dc7f750b5f29a0bb38b367b81314c4f71896e340c40825 /com/google/code/gson/gson/2.8.0/gson-2.8.0.jar
|
||||
a5331a0ecb548f9942ab5b93c7ac43c38a21e897763dde1bcdbf0774f416ca6f /com/google/code/gson/gson/2.8.0/gson-2.8.0.pom
|
||||
0f1d8369b1e9f1bc4b467c8dcfdd8b59733aad5b5c8419c3a59b2f9abaf04cd2 /com/google/code/gson/gson-parent/2.8.0/gson-parent-2.8.0.pom
|
||||
4838f4f29a027522363cef1bcda1b48808880b0de4953fab6db4121ee27b649b /com/googlecode/jarjar/jarjar/1.1/jarjar-1.1.jar
|
||||
be4f53c0bc04da4e3d6c65c8f3243d1ea4135e35c7d7dda88af1c582687263d7 /com/googlecode/jarjar/jarjar/1.1/jarjar-1.1.pom
|
||||
ddbbf392f8e61f770a509a49aed5f32ead19768283b4b512c626e09e1ba5cc46 /com/googlecode/mp4parser/isoparser/1.1.7/isoparser-1.1.7.jar
|
||||
@@ -46,13 +51,16 @@ ddbbf392f8e61f770a509a49aed5f32ead19768283b4b512c626e09e1ba5cc46 /com/googlecode
|
||||
2a0d16010d3825c732aeab1d25f181074945063d8f76c28004e7d423d66cb75b /com/google/guava/guava/17.0/guava-17.0.pom
|
||||
d664fbfc03d2e5ce9cab2a44fb01f1d0bf9dfebeccc1a473b1f9ea31f79f6f99 /com/google/guava/guava/18.0/guava-18.0.jar
|
||||
e743d61d76f76b5dc060d6f7914fdd41c4418b3529062556920116a716719836 /com/google/guava/guava/18.0/guava-18.0.pom
|
||||
58d4cc2e05ebb012bbac568b032f75623be1cb6fb096f3c60c72a86f7f057de4 /com/google/guava/guava/19.0/guava-19.0.jar
|
||||
addc064da7f1077fdf4dc90e5aaa887cd790850d1b74fe2e6e25d5f78551ac63 /com/google/guava/guava/19.0/guava-19.0.pom
|
||||
36a666e3b71ae7f0f0dca23654b67e086e6c93d192f60ba5dfd5519db6c288c8 /com/google/guava/guava/20.0/guava-20.0.jar
|
||||
363cc83767b760d7a564d5301e09467e6d48fc1c1c1664b1e18c50815ce19076 /com/google/guava/guava/20.0/guava-20.0.pom
|
||||
972139718abc8a4893fa78cba8cf7b2c903f35c97aaf44fa3031b0669948b480 /com/google/guava/guava/21.0/guava-21.0.jar
|
||||
c0b016a85c784e01ca51e9d64bf8fe80ce402b206fea897b03258d5e6d0ff80d /com/google/guava/guava/21.0/guava-21.0.pom
|
||||
59bf456547b6dda3ced968cb56f7f2d3e14474e2de2960a32c47e31c1e456c61 /com/google/guava/guava-jdk5/17.0/guava-jdk5-17.0.jar
|
||||
f8c152627813d45bc4e7cc17ad6ed6a649a0231ae819ffb8e05d19b205a3db66 /com/google/guava/guava-jdk5/17.0/guava-jdk5-17.0.pom
|
||||
9fba53585551d3c775179de859760a73c4beab407dfde16b551a09a87b50532a /com/google/guava/guava-parent/17.0/guava-parent-17.0.pom
|
||||
a4accc8895e757f6a33f087e4fd0b661c5638ffe5e0728f298efe7d80551b166 /com/google/guava/guava-parent/18.0/guava-parent-18.0.pom
|
||||
3b76ff43ecdf10f74da36e4aae2b470c9d063e053c5ca026f5512ae94f1c3e10 /com/google/guava/guava-parent/19.0/guava-parent-19.0.pom
|
||||
f1226fd07fc72af8d6232bdfa70bf31d883a1a01cbc547f23a74e9066c692df1 /com/google/guava/guava-parent/20.0/guava-parent-20.0.pom
|
||||
acdc6d6f07b346caeb174932788bccc63c035cc5c2b100958c21ffe0f6e19988 /com/google/guava/guava-parent/21.0/guava-parent-21.0.pom
|
||||
5a9606bc27632956b3c11df887e9b3e785854068aaa4e0808ed5660f60b1fb6f /com/google/guava/guava-parent-jdk5/17.0/guava-parent-jdk5-17.0.pom
|
||||
f744c79f198e53deea4cd311f9135a568ab67052804d80fd3d60b0385644cf65 /com/google/http-client/google-http-client/1.20.0/google-http-client-1.20.0.pom
|
||||
f88ffa329ac52fb4f2ff0eb877ef7318423ac9b791a107f886ed5c7a00e77e11 /com/google/http-client/google-http-client/1.22.0/google-http-client-1.22.0.jar
|
||||
@@ -78,14 +86,18 @@ bbc21cab2e0b0c76c9977fdf8b80c311788094d81e6910a2a6e63d80910102c7 /com/gradle/pub
|
||||
06b382efe9d60474aa3df7f4851397b3ae0c4f142567f0fc66a8fa2706a665e4 /com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.pom
|
||||
2c149735a093b6c65a27db760896ad5c5b06e29100bb8969937667784fef4ba0 /com/mojang/authlib/1.5.16/authlib-1.5.16.jar
|
||||
d05175230d79f518b5c4664d24e3d115f5f3888e3806f3b6076cd0b4943e6ca6 /com/mojang/authlib/1.5.16/authlib-1.5.16.pom
|
||||
dc07988e5bb1609e8e027cc89c2993a19586e219c02ff74ea4298e73e97b0efb /com/mojang/authlib/1.5.22/authlib-1.5.22.jar
|
||||
3e70bac893bb04ac2992baa6fc438f6fc33c0d0213c4edcc40d295e7938091ca /com/mojang/authlib/1.5.22/authlib-1.5.22.pom
|
||||
3120fd24c09ab9bc088cb9c1eb2065be86718608450fdbc27b5d371729a619cb /com/mojang/netty/1.6/netty-1.6.jar
|
||||
568cc3fad81e5e389bad0012a07eca5db073e287200c6c9cb02caf3dc489e9f6 /com/mojang/netty/1.6/netty-1.6.pom
|
||||
c5bbcbcfba1c7444af30b94f7c3eb2ff215ec3cc17c57a9be6b2c815f9a93a0f /com/mojang/realms/1.8.19/realms-1.8.19.jar
|
||||
c9a429757023ac6daa636205efebd16ef8c21e2ec4e45621fc134a5692c14380 /com/mojang/realms/1.8.19/realms-1.8.19.pom
|
||||
c8a095123be93c59d4ac29e4a0616495b3d479ac65913cb719a81ee583e9dfcd /com/mojang/authlib/1.5.25/authlib-1.5.25.jar
|
||||
194f9d56c3b05a6df8d4f94c383e2eb0b4d4c2ec0437f03a385cbe5d5ab314cd /com/mojang/authlib/1.5.25/authlib-1.5.25.pom
|
||||
c7c7f255b76ff208cac4febf58ddafadcd63bac970dbe0c26dd62c940e80f5b7 /com/mojang/patchy/1.1/patchy-1.1.jar
|
||||
3dddf11f0085213c080ee6d2bfe387424339c6ec01d22796d3e26e6e813881ab /com/mojang/patchy/1.1/patchy-1.1.pom
|
||||
e3ab95d053a4e180693422bf56592f3c62ff273b0deb1d4a3cb5f76d8fb6994a /com/mojang/realms/1.10.17/realms-1.10.17.jar
|
||||
152235c4a886c6c9a9af7c76092a8161c5e505199b728c1a965f069a7519290f /com/mojang/realms/1.10.17/realms-1.10.17.pom
|
||||
841d2f407824a4a9c3dd872c51ecd76d50381c569b79c3ea7b06b69eec2bba53 /com/mojang/text2speech/1.10.3/text2speech-1.10.3.jar
|
||||
4465dc903f2bb36f18474de86edd8db46c2538705f675f32cbcdbf8b01ecfc09 /com/mojang/text2speech/1.10.3/text2speech-1.10.3.pom
|
||||
e7cd8951956d349b568b7ccfd4f5b2529a8c113e67c32b028f52ffda371259d9 /commons-cli/commons-cli/1.2/commons-cli-1.2.jar
|
||||
18f3e92076e08c2fde48317025098e9f6baaa85f6912eb43f2d7e68d570e4561 /commons-cli/commons-cli/1.2/commons-cli-1.2.pom
|
||||
4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 /commons-codec/commons-codec/1.10/commons-codec-1.10.jar
|
||||
bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb /commons-codec/commons-codec/1.10/commons-codec-1.10.pom
|
||||
1bafd2ece2e88db4cdf835a7f8f0de65fab5b1147977a5dcc59b7c1b8c6f5080 /commons-codec/commons-codec/1.3/commons-codec-1.3.jar
|
||||
d157e34244e884dd91fa01921ca84372e11f7bb08fedb5d456c0670c28054636 /commons-codec/commons-codec/1.3/commons-codec-1.3.pom
|
||||
54b34e941b8e1414bd3e40d736efd3481772dc26db3296f6aa45cec9f6203d86 /commons-codec/commons-codec/1.6/commons-codec-1.6.jar
|
||||
@@ -96,6 +108,10 @@ a7f713593007813bf07d19bd1df9f81c86c0719e9a0bb2ef1b98b78313fc940d /commons-io/com
|
||||
2dae496a19c82b8e9985a1246aa80cf98082b1ae2217cf4b2d4d5ff13a365af2 /commons-io/commons-io/1.4/commons-io-1.4.pom
|
||||
cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 /commons-io/commons-io/2.4/commons-io-2.4.jar
|
||||
b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 /commons-io/commons-io/2.4/commons-io-2.4.pom
|
||||
a10418348d234968600ccb1d988efcbbd08716e1d96936ccc1880e7d22513474 /commons-io/commons-io/2.5/commons-io-2.5.jar
|
||||
28ebb2998bc7d7acb25078526971640892000f3413586ff42d611f1043bfec30 /commons-io/commons-io/2.5/commons-io-2.5.pom
|
||||
2c73b940c91250bc98346926270f13a6a10bb6e29d2c9316a70d134e382c873e /commons-lang/commons-lang/2.4/commons-lang-2.4.jar
|
||||
90306278d39ed5a50dafa468adee4d272b635d54c4f7295e293e42bbdb8ad666 /commons-lang/commons-lang/2.4/commons-lang-2.4.pom
|
||||
ce6f913cad1f0db3aad70186d65c5bc7ffcc9a99e3fe8e0b137312819f7c362f /commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
|
||||
d0f2e16d054e8bb97add9ca26525eb2346f692809fcd2a28787da8ceb3c35ee8 /commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
|
||||
70903f6fc82e9908c8da9f20443f61d90f0870a312642991fe8462a0b9391784 /commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar
|
||||
@@ -123,16 +139,18 @@ c1a2438a4d35f8586c71d96c44a7e2f133ec924597147a246f8c501acca6acb5 /com/paulscode/
|
||||
9f9920b48ae5f1045fe966f08164d6b4e0a727cf17f8e4813ae5c0f2daecffbc /com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.pom
|
||||
c160fbd78f51a0c2375a794e435ce2112524a6871f64d0331895e9e26ee8b9ee /com/typesafe/config/1.2.1/config-1.2.1.jar
|
||||
62361ef10448869fff8c05150bd0449b423e3ff4498f2a4bab825b3c7685aa3c /com/typesafe/config/1.2.1/config-1.2.1.pom
|
||||
83b111d3d1a8e8cf06cacf2c877f40bc4fce23c3b04941fe9a1a582374e6d924 /de/oceanlabs/mcp/mcp/1.9.4/mcp-1.9.4-srg.zip
|
||||
16f933fe337c265ed20fd616a2acadbd119a0b1d1fb186ca26fc8964aeebe0c2 /de/oceanlabs/mcp/mcp_snapshot/20160518-1.9.4/mcp_snapshot-20160518-1.9.4.zip
|
||||
bea27218818448851594889bf7d984df614ffc698bbe41599dd6237d627e3782 /de/oceanlabs/mcp/mcp/1.12.2/mcp-1.12.2-srg.zip
|
||||
5bbf57acadec0f5ea930b793772bbbf2885098aed8d2ecf6290c170a7cd9f33e /de/oceanlabs/mcp/mcp_snapshot/20170615-1.12/mcp_snapshot-20170615-1.12.zip
|
||||
22c45060f350fcaa94e503f4a420cf8237c26c0fcdb4ada4aa98389b75c7b231 /de/oceanlabs/mcp/RetroGuard/3.6.6/RetroGuard-3.6.6.jar
|
||||
d6f165bb39aaa20ee14fdcbbdb0b8fffae38067087f333ec6e0acd3f6666b2ad /de/oceanlabs/mcp/RetroGuard/3.6.6/RetroGuard-3.6.6.pom
|
||||
* /de/oceanlabs/mcp/versions.json
|
||||
50510e9c9874b539b98ef931fe7eeeb002f6b5b1976ea37669b9493426294561 /io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.jar
|
||||
990a10af14db6b136d3a539eadca5dc7b4d0ceab9a1c90c5268b0ca8ae27b14b /io/netty/netty-all/4.0.23.Final/netty-all-4.0.23.Final.pom
|
||||
f7f1bd6f1e1df0b300730f1551b7222f13871e40ba5a464978bd3eed94e2212d /io/netty/netty-parent/4.0.23.Final/netty-parent-4.0.23.Final.pom
|
||||
b4533f3b4029e480288d85187fc9ee6789f3d362c6633d8e9b092ec455ad2f28 /it/unimi/dsi/fastutil/7.0.12_mojang/fastutil-7.0.12_mojang.jar
|
||||
2b3db089f1f78a49a628d9015cca6a95e87421fa04262553cd2c4c79d66d04a7 /it/unimi/dsi/fastutil/7.0.12_mojang/fastutil-7.0.12_mojang.pom
|
||||
142667dfce3afeb5cc6e18e893d895604060ecef9dfc0d261f0eb9b9e8c81cb0 /gradle/plugin/net/minecrell/gitpatcher/0.9.0/gitpatcher-0.9.0.jar
|
||||
37a6757b16b927873baefe8498fa92c5385eba0ded3852982965491da2dd8e3a /gradle/plugin/net/minecrell/gitpatcher/0.9.0/gitpatcher-0.9.0.pom
|
||||
fd5ad66cdd0a496d281b26c699f4511da7c3f95083659ebb7bae22dab876581a /io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.jar
|
||||
8ec38a54fc6ed53201d507c6690805878158bcab25c2f476a74c0ccb1d78870b /io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.pom
|
||||
117ff8d9069d0278585c284ab0817f826f018d9cf4e30f7e1b11f4fbc73013d1 /io/netty/netty-parent/4.1.9.Final/netty-parent-4.1.9.Final.pom
|
||||
c266701bd7a4a2c36285862c1e682ccb7b5cb5b380d0de9bb1b34becf9e1c065 /it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar
|
||||
2846073506b6ff0361f08d0deafb2f3921797974e9685cae6c103f4a7f29100b /it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.pom
|
||||
09adf7955baa6bddf57a4bdbf9a91cf690261314969b59a18085ece1e05eccf9 /java3d/vecmath/1.5.2/vecmath-1.5.2.jar
|
||||
a4aee4668f1b127c95c9afe1b922f4c5a0b1ad879ba811077cb7d0e048dce231 /java3d/vecmath/1.5.2/vecmath-1.5.2.pom
|
||||
a6d2c9c0ddff7702662073b69c6dc4ec83011d22e4eb2dada28aa2d66ee47f97 /jline/jline/2.13/jline-2.13.jar
|
||||
@@ -144,11 +162,11 @@ cb54dedc5d8c4510148dfa792701cbac1a84c383a84f48f5a32e6d7e460bbb72 /log4j/log4j/1.
|
||||
0c3085cb93c3ef95d731c274b6f2dd195aa0405fe9328d69cab7f5e899d5e124 /lzma/lzma/0.0.1/lzma-0.0.1.jar
|
||||
a096bc9f7579cec07483874151578720eeb3189c546c19cff56a6203df17b50e /lzma/lzma/0.0.1/lzma-0.0.1.pom
|
||||
* /mc/game/version_manifest.json
|
||||
23e90103a1ca2ac71100004c6d5846de09f85695f579843ef8da41571e60c908 /mc/game/1.9.4/client/4a61c873be90bb1196d68dac7b29870408c56969/client.jar
|
||||
13fea7aa10d804dd14ed7ebde2493dc64c7d3c8173369309bd7f6ea4c0ea40ad /mc/game/1.9.4/server/edbb7b1758af33d365bf835eb9d13de005b1e274/server.jar
|
||||
045c639666c64d61efcdd7be61dbd6a3b1ce5108a11d7d4fc9ad5584937bce19 /mc/game/cdcd308b7cbd15bc595850ce6557d4ade48cee7a/1.9.4.json
|
||||
3bff6a1489b8e54cf130344bc5e8744db331045ad2fc736612576e1d80eb1f48 /net/java/dev/jna/jna/3.4.0/jna-3.4.0.jar
|
||||
cf4605822bd56d135dd7031603f122a11a0ec772373f466a4f2aac72dd9a1761 /net/java/dev/jna/jna/3.4.0/jna-3.4.0.pom
|
||||
8ada07da5ee77dad3527bd7278fbd05ee1fc8a597813b216a871a2d7d64cc64f /mc/game/1.12.2/client/0f275bc1547d01fa5f56ba34bdc87d981ee12daf/client.jar
|
||||
fe1f9274e6dad9191bf6e6e8e36ee6ebc737f373603df0946aafcded0d53167e /mc/game/1.12.2/server/886945bfb2b978778c3a0288fd7fab09d315b25f/server.jar
|
||||
* /mc/game/cf72a57ff499d6d9ade870b2143ee54958bd33ef/1.12.2.json
|
||||
c4dadeeecaa90c8847902082aee5eb107fcf59c5d0e63a17fcaf273c0e2d2bd1 /net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar
|
||||
800bb2831dda341336ea69b7beb675f159973f64dad6aaa1ad8c4fa78e5cb19b /net/java/dev/jna/jna/4.4.0/jna-4.4.0.pom
|
||||
ea89d5090c8303ba4e9a0056e6d8a20429f3e021411e950bfd9eba3b6e6cf15c /net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar
|
||||
8f0c14f62912c089d81386015e78cf212f9e96f675b3bc0e519c1e2d92aa8950 /net/java/dev/jna/platform/3.4.0/platform-3.4.0.pom
|
||||
79b5a4f5829e1a49a415711f7fb8eb5b9ad22defa72929fda2da96ec30d3f018 /net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar
|
||||
@@ -159,11 +177,11 @@ ea89d5090c8303ba4e9a0056e6d8a20429f3e021411e950bfd9eba3b6e6cf15c /net/java/dev/j
|
||||
ba27597365ae85a836c1f51819903668b4a1a7490e39e530633cc8a7b40b5500 /net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5.pom
|
||||
c3334ff39cf0ab3b54925619101054c90098b7c733b1e7834c7b75e4c41e84a5 /net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar
|
||||
af09ead4eb241473e7ec4d152a91a722ea09a717a202e20e4b385eac3217b7d6 /net/java/jutils/jutils/1.0.0/jutils-1.0.0.pom
|
||||
b47c5d5810643426a3147ddb2195ef2ab67c80b167e7c2ac64a5d0dee8c030dd /net/md-5/SpecialSource/1.7.4/SpecialSource-1.7.4.jar
|
||||
5f374f8ae7afff8dbc23aff14e59c5bd585c230afe9a8dcaa7b928e8cb16a27e /net/md-5/SpecialSource/1.7.4/SpecialSource-1.7.4.pom
|
||||
* /net/minecraftforge/forge/json
|
||||
95f1435c1638b942f4a63d5c5b3cbc85653183caa5357e4586fb792e2d7a819b /net/minecraftforge/forge/1.9.4-12.17.0.1976/forge-1.9.4-12.17.0.1976.pom
|
||||
f317d5572442e9c072046247a5f1c9e5643c5cf5af8900a2c2f878a44d07bbf1 /net/minecraftforge/forge/1.9.4-12.17.0.1976/forge-1.9.4-12.17.0.1976-userdev.jar
|
||||
e6305077f41e2bfe957b486bed110e8af9ce54a651d36722d8d23e8e260d5b83 /net/md-5/SpecialSource/1.8.1/SpecialSource-1.8.1.jar
|
||||
dc5a991a91d6abc0059a7d0842a9e9899cf5e80354a727a22ffe35f508692d76 /net/md-5/SpecialSource/1.8.1/SpecialSource-1.8.1.pom
|
||||
0be3944587adda74c34735dc66757afed3223d8599ac6ad1b402d36d452a09f9 /net/minecraftforge/forge/1.12.2-14.23.0.2486/forge-1.12.2-14.23.0.2486.pom
|
||||
7fdc682b7ae27f08d50873ae68ded2bc3e14756559fae5b9717efcf6814952c8 /net/minecraftforge/forge/1.12.2-14.23.0.2486/forge-1.12.2-14.23.0.2486-userdev.jar
|
||||
e74b65b8948446982a506a96176dd8baf4688237ba4903f56ca6f667b6c7ee42 /net/minecraft/launchwrapper/1.11/launchwrapper-1.11.jar
|
||||
616c4971035d1e6ab4809e16daabb02aa308c1dc001c06dd547c7d3b2e916999 /net/minecraft/launchwrapper/1.11/launchwrapper-1.11.pom
|
||||
57f402b626d16cc2705bf2a37add7adbb074f0ca3b3102fa6e23aa303dae682f /net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar
|
||||
@@ -172,8 +190,10 @@ e74b65b8948446982a506a96176dd8baf4688237ba4903f56ca6f667b6c7ee42 /net/minecraft/
|
||||
60f08a3d6fc0e7948fd00fc95fad014fae5a5dc7eb991a631e0efee8bfad0b27 /net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.pom
|
||||
3fcfbe3203c2ea521bf7640484fd35d6303186ea2e08e72f032d640ca067ffda /net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.jar
|
||||
692744a19473011539ebc1370a264b8af1c056e0ae21f5372aa9dd7d4b4e5a2b /net/sf/jopt-simple/jopt-simple/4.6/jopt-simple-4.6.pom
|
||||
9f0c8d50fa4b79b6ff1502dbec8502179d6b9497cacbe17a13074001aed537ec /net/sf/jopt-simple/jopt-simple/5.0.1/jopt-simple-5.0.1.jar
|
||||
606e9b1d8e448a8f454b7eb585320b392e80f68880e92bef98cdf9dab8714340 /net/sf/jopt-simple/jopt-simple/5.0.1/jopt-simple-5.0.1.pom
|
||||
26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 /net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.jar
|
||||
7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 /net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.pom
|
||||
6f45c00908265947c39221035250024f2caec9a15c1c8cf553ebeecee289f342 /net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar
|
||||
df75c23d079c8f1a4f5b2fda4ba271ef535993d53d5664213aa2325784e50fd3 /net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.pom
|
||||
dc0ba5bff6140dc92339973026a0ecbddc2a3b01bdd46ed9d16becc2f6d78de6 /net/sf/opencsv/opencsv/2.3/opencsv-2.3.jar
|
||||
57f5607565d6a90dee6722801d4524813d9d2785046f2954a18861dfbf4a2149 /net/sf/opencsv/opencsv/2.3/opencsv-2.3.pom
|
||||
294fb88c272598b9a5dcae15f13d228e64134256de941fbc28917a994beeb075 /net/sf/trove4j/trove4j/2.1.0/trove4j-2.1.0.jar
|
||||
@@ -195,6 +215,8 @@ a93aa9c66665872b0e51360c15ae282971e36a8aa987b40ef4d82d9a5aa151c4 /org/apache/ant
|
||||
802feece72852dafcbd0a425a60367c72c5cb9b6ea5aae59481128569189daf9 /org/apache/apache/10/apache-10.pom
|
||||
ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d /org/apache/apache/13/apache-13.pom
|
||||
36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 /org/apache/apache/15/apache-15.pom
|
||||
9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e /org/apache/apache/16/apache-16.pom
|
||||
7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 /org/apache/apache/18/apache-18.pom
|
||||
9e9323a26ba8eb2394efef0c96d31b70df570808630dc147cab1e73541cc5194 /org/apache/apache/4/apache-4.pom
|
||||
4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd /org/apache/apache/9/apache-9.pom
|
||||
93f8dfcd20831a28d092427723f696bceb70b28e7fb89d7914f14d5ea492ce5a /org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar
|
||||
@@ -205,6 +227,8 @@ cb49812dc1bfb0ea4f20f398bcae1a88c6406e213e67f7524fb10d4f8ad9347b /org/apache/com
|
||||
82827f6019c0f71bd74fba886ab337ff6da291f63df9723379a209d6ad3b44f8 /org/apache/commons/commons-exec/1.3/commons-exec-1.3.pom
|
||||
6b81d10754dadf184d386011486e6509c2cc0c3d33565ced4fb4402b9413d47d /org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar
|
||||
e1875bf575999ebc62dec34304a0d108c30a4ff8101e8ea5c9a9332715277940 /org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.pom
|
||||
8ac96fc686512d777fca85e144f196cd7cfe0c0aec23127229497d1a38ff651c /org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar
|
||||
45e7fbb2c231db903a5d5aadafc636a173a4d54560f78a11ff498028ef9e345e /org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.pom
|
||||
b9e0306f393460105b8a3fa5105250c5291b1efaa99954ace0ec1c783109a02a /org/apache/commons/commons-parent/11/commons-parent-11.pom
|
||||
fb8c5e55e30a7addb4ff210858a0e8d2494ed6757bbe19012da99d51586c3cbb /org/apache/commons/commons-parent/22/commons-parent-22.pom
|
||||
467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba /org/apache/commons/commons-parent/25/commons-parent-25.pom
|
||||
@@ -212,8 +236,11 @@ fb8c5e55e30a7addb4ff210858a0e8d2494ed6757bbe19012da99d51586c3cbb /org/apache/com
|
||||
e4d258af8b2ff4032148d415379def7870789a6003e80576f1504b10f26b4be8 /org/apache/commons/commons-parent/32/commons-parent-32.pom
|
||||
53d0011352e2e5106f379dafccdac7754ec6f0f78243c0305e4969f5acddf8fb /org/apache/commons/commons-parent/33/commons-parent-33.pom
|
||||
7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a /org/apache/commons/commons-parent/35/commons-parent-35.pom
|
||||
87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 /org/apache/commons/commons-parent/39/commons-parent-39.pom
|
||||
b2877c8016f8b28924c8e90dd5ae40cd11f328d02a1de98d80de22574ab36ec7 /org/apache/commons/commons-parent/41/commons-parent-41.pom
|
||||
8bd632c00bdf80a7de36c22b60f12452c147d8eca2f00d79d66699ebe7daa02a /org/apache/commons/commons-parent/5/commons-parent-5.pom
|
||||
01e97067a1f9bd0e0a34f2f32bbf43fe6e9b11910f3b0dfe77fd7fb418619105 /org/apache/commons/commons-parent/7/commons-parent-7.pom
|
||||
5331b7d3e0aed59728c80f1118e4dbf78565d4109e81d16602c9cadbdb23a128 /org/apache/commons/commons-parent/9/commons-parent-9.pom
|
||||
752596ebdc7c9ae5d9a655de3bb06d078734679a9de23321dbf284ee44563c03 /org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar
|
||||
51b8c025a4a1700d861d17bc2332f2b5045a81bad5d55291d9b652bb782151b2 /org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.pom
|
||||
9d0e815461efc8fc9aa5de4dda9ae29d076430b2e93e268a31d7a47cc00a31cf /org/apache/httpcomponents/httpclient/4.2.2/httpclient-4.2.2.jar
|
||||
@@ -238,10 +265,16 @@ a35e70c72865add3f9416194e02d6f9967dbf0c77d253933f80fbf46ad4d2169 /org/apache/htt
|
||||
b5d9225adb8683c1d7c5514544382add004547c93694abb5bd52b87346886f42 /org/apache/httpcomponents/project/6/project-6.pom
|
||||
3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3 /org/apache/httpcomponents/project/7/project-7.pom
|
||||
9ab50a08565c7c01082266d2464b7656e2448e40788375ff5c034da17042cc24 /org/apache/logging/log4j/log4j/2.0-beta9/log4j-2.0-beta9.pom
|
||||
78d4abedfb7fdd01f3276a0d17a5eaedce9e99b9d2ee83bb9fc8a609e177729a /org/apache/logging/log4j/log4j/2.8.1/log4j-2.8.1.pom
|
||||
eb0ca9bdd938f80711152a758d6bc331a8b0d769199d457294dc67ed03f73498 /org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.jar
|
||||
4e10aac66cfabc8a16f0045bca650e082a190caca85d1c28376a71b9b918b40d /org/apache/logging/log4j/log4j-api/2.0-beta9/log4j-api-2.0-beta9.pom
|
||||
1205ab764b1326f7d96d99baa4a4e12614599bf3d735790947748ee116511fa2 /org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.jar
|
||||
af8959c619bd2c620723b83e511dea7b5018378295449bccaa21f6f72f1d2d94 /org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.pom
|
||||
dcde6033b205433d6e9855c93740f798951fa3a3f252035a768d9f356fde806d /org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.jar
|
||||
f360def8ad0c62f5420a9b2ef8d6a51f87703e05c1df08494578a1d4024b05ad /org/apache/logging/log4j/log4j-core/2.0-beta9/log4j-core-2.0-beta9.pom
|
||||
815a73e20e90a413662eefe8594414684df3d5723edcd76070e1a5aee864616e /org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.jar
|
||||
6efbf3a19b80fb812392ac99a113138f1e909d85dfa44c0813c1c69737b82c52 /org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.pom
|
||||
34b2bf4f531a809168961672ff419d1abf96725b8dfe52980f00c8c4eb134bd6 /org/apache/logging/logging-parent/1/logging-parent-1.pom
|
||||
4d223e01a6569d6655c1f4fce84969d45142cdbabdb118ea08c5c8c33ec632f6 /org/apache/maven/maven/3.0.4/maven-3.0.4.pom
|
||||
4c2f8341518aeb9d488844e334c02fa66dd4bb091bfdeb965c8a848ac6ea5aa2 /org/apache/maven/maven/3.0-alpha-2/maven-3.0-alpha-2.pom
|
||||
33ff4aabbd0d02e4dd8279cda8f366c69915302bc4bb97bc01814a985f5c0643 /org/apache/maven/maven-aether-provider/3.0.4/maven-aether-provider-3.0.4.jar
|
||||
@@ -363,6 +396,23 @@ fde386a7905173a1b103de6ab820727584b50d0e32282e2797787c20a64ffa93 /org/hamcrest/h
|
||||
6d535f94efb663bdb682c9f27a50335394688009642ba7a9677504bc1be4129b /org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
|
||||
32ed093f39c46a8d99f801240069478eac93b35f07351c001f2cef4330e97b4a /org/jdom/jdom2/2.0.5/jdom2-2.0.5.jar
|
||||
ebac276b5ad62e9d312fb6ce663d55fdebaba9badc918166e7d60b1ffd1bd475 /org/jdom/jdom2/2.0.5/jdom2-2.0.5.pom
|
||||
ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 /org/jetbrains/annotations/13.0/annotations-13.0.jar
|
||||
965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 /org/jetbrains/annotations/13.0/annotations-13.0.pom
|
||||
92cc7a1ef7c196583b7ba3a16650da6645eb2d31d8f98f7a73aff9fb8e05fca4 /org/jetbrains/kotlin/kotlin-android-extensions/1.1.3-2/kotlin-android-extensions-1.1.3-2.jar
|
||||
a5c5dd4f01993140d3e4925a22a807eae442d50a6ce45f2bce4136e83f590bbc /org/jetbrains/kotlin/kotlin-android-extensions/1.1.3-2/kotlin-android-extensions-1.1.3-2.pom
|
||||
a43795fe83bca9957c128e4921445251913e9ea8f161e33182339f126128b471 /org/jetbrains/kotlin/kotlin-annotation-processing/1.1.3-2/kotlin-annotation-processing-1.1.3-2.jar
|
||||
2ac1a8d5d7f4bdbb5721030f16ea96bc51596a99874f6d4a7f6baef08c47dd2d /org/jetbrains/kotlin/kotlin-annotation-processing/1.1.3-2/kotlin-annotation-processing-1.1.3-2.pom
|
||||
2f72f2c97fa35c270f3f7349792a4d5ac07e10a65db68b01906a526501d790b1 /org/jetbrains/kotlin/kotlin-compiler-embeddable/1.1.3-2/kotlin-compiler-embeddable-1.1.3-2.jar
|
||||
9c3370b413f9a61c4dacd6ef407c1ca122ca1eb8d47d7109f057569a7b456f1d /org/jetbrains/kotlin/kotlin-compiler-embeddable/1.1.3-2/kotlin-compiler-embeddable-1.1.3-2.pom
|
||||
bc8179dda35809b6be2bcb16e2ea5ae66912a029b4d2025cf775bd3827c57d71 /org/jetbrains/kotlin/kotlin-compiler-runner/1.1.3-2/kotlin-compiler-runner-1.1.3-2.jar
|
||||
a2263fe22b12db43a31b67e1f0078abe1b7b49bc9c9ecfc7ac51f5b0f444512e /org/jetbrains/kotlin/kotlin-compiler-runner/1.1.3-2/kotlin-compiler-runner-1.1.3-2.pom
|
||||
38a5ffa0800f06d7dc3d48a61281f629877955c6881ebe7e0b778a52cd59078e /org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.3-2/kotlin-gradle-plugin-1.1.3-2.jar
|
||||
ebc5f8dc5f766a9a7a49a0ad1510ca95cc86e16b246ee91a99cda39a30f611a0 /org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.3-2/kotlin-gradle-plugin-1.1.3-2.pom
|
||||
eb772318f9a54ce38828605ded8750ea88fb516abff972112ef7213720441429 /org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.1.3-2/kotlin-gradle-plugin-api-1.1.3-2.jar
|
||||
d3bd81eba8fd75110103a0bb331e7ac4436da3e727c7ef0e34cd3ca392717d3b /org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.1.3-2/kotlin-gradle-plugin-api-1.1.3-2.pom
|
||||
bc7a649376ddaf3187abfe927b190dd11220c1e851a38bb63d4865b13bf73927 /org/jetbrains/kotlin/kotlin-project/1.1.3-2/kotlin-project-1.1.3-2.pom
|
||||
f2885288839f82f824a0c042922ae7f24ed0d55ce26a74b6a7c557e0b7e30c24 /org/jetbrains/kotlin/kotlin-stdlib/1.1.3-2/kotlin-stdlib-1.1.3-2.jar
|
||||
f8fd874c37c89d5dfe5ec8190d94626512bd36ab2c2ac9d4b67515c5bee745cb /org/jetbrains/kotlin/kotlin-stdlib/1.1.3-2/kotlin-stdlib-1.1.3-2.pom
|
||||
212f6eaa0491dd7359dc33c3a72e82a23b096e1890d984b4d92395abc9a6bf7f /org/jvnet/localizer/localizer/1.12/localizer-1.12.jar
|
||||
313b5700337e773a68eeab64ec6952c61b5e7a51839d46bcf77376887fe92f02 /org/jvnet/localizer/localizer/1.12/localizer-1.12.pom
|
||||
e21488c2fe8db4b23a00c3cfdeab3b600e84c1647e08fb7bee442f5fc1f83990 /org/jvnet/localizer/localizer-parent/1.12/localizer-parent-1.12.pom
|
||||
@@ -399,18 +449,19 @@ e87ea4823ecf2dd856901da359270be904236be59c27e2781eb8d78c97e45b2a /org/ow2/asm/as
|
||||
9c99d7a555725bc2f8379977935cdba16d687d9c93b6e0725e196180d490c995 /org/ow2/asm/asm-debug-all/5.0.3/asm-debug-all-5.0.3.pom
|
||||
2341a72bba5e38c1028a332c11607e1706c13fa600fee6fb546b9a1708418097 /org/ow2/asm/asm-debug-all/5.0.4/asm-debug-all-5.0.4.jar
|
||||
62efbf37e5068a8708541ae0a4da3d1140f4d711d30e4366445cb96ce13cc79e /org/ow2/asm/asm-debug-all/5.0.4/asm-debug-all-5.0.4.pom
|
||||
f7ac3f642c36c406543bb56ae3db3a53f263f71bd857b04709986e2d5798c8c4 /org/ow2/asm/asm-debug-all/5.1/asm-debug-all-5.1.jar
|
||||
0a46e33f6b80bd21ac41eec33fca2e43d79253fb46a32d64ba3867ee22451fff /org/ow2/asm/asm-debug-all/5.1/asm-debug-all-5.1.pom
|
||||
254b82bec9da4f8efbc8b1f93ab2b87f7465227a82b36cf3d05d9e77a0e8dd2e /org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar
|
||||
491f13bd60757a7cfe76e767766b061d557010394f52cec2fb067707de702caa /org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.pom
|
||||
b4845405fee9fe4f5f665dfe19badcf32581e3eea51b99a45e9f76a0a830c09d /org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2-sources.jar
|
||||
536a8d9c7c4ea27ae4b92d28926546c305d1b819f9d52cc9a3728c828b032efd /org/ow2/asm/asm-debug-all/6.0_BETA/asm-debug-all-6.0_BETA.jar
|
||||
8eb5e974f89a8bde0065bb6ec46e8647d4d397b34e125f14ace8fb5c78b6f604 /org/ow2/asm/asm-debug-all/6.0_BETA/asm-debug-all-6.0_BETA.pom
|
||||
c2edabf4128a534df4b8b4b0b9b562e94f242ba95ac24dc61485432b8a188e32 /org/ow2/asm/asm-parent/5.0.3/asm-parent-5.0.3.pom
|
||||
fdf05b9df226573b331a7e5df01135e527dcc07c71626445732bd04379aa4a72 /org/ow2/asm/asm-parent/5.0.4/asm-parent-5.0.4.pom
|
||||
85ec8258fafc283f61647e6a11b404890821c11db6fcf550779ecf7a14151007 /org/ow2/asm/asm-parent/5.1/asm-parent-5.1.pom
|
||||
cbfacd5dd812db16dc910994007fe58d9402a25507f81a1c2218e15c2c1bedfa /org/ow2/asm/asm-parent/5.2/asm-parent-5.2.pom
|
||||
6877adfe16143708322b98e4d23ab9c2a9761bec02d476a4600f39be877d6e09 /org/ow2/asm/asm-parent/6.0_BETA/asm-parent-6.0_BETA.pom
|
||||
347a7a9400f9964e87c91d3980e48eebdc8d024bc3b36f7f22189c662853a51c /org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar
|
||||
65819ca7c5a218ff49f8ebe72f3b39219c81f137d017acc1aec15b1054cf5236 /org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.pom
|
||||
51215c67d2c068d8b7d2f6f80f51372a098075deccc448d4bdd7b987ba8328fb /org/ow2/ow2/1.3/ow2-1.3.pom
|
||||
3ca225ce3917eac8bf4b7d2186845df4e70dcdede356dca8537b6d78a535c91e /org/projectlombok/lombok/1.16.4/lombok-1.16.4.jar
|
||||
fcb8d5745f776567f1cce332282750b1653568324621ecef03288c8a25919d0e /org/projectlombok/lombok/1.16.4/lombok-1.16.4.pom
|
||||
e0a471be03e1e6b02bf019480cec7a3ac9801702bf7bf62f15d077ad4df8dd5d /org/projectlombok/lombok/1.16.6/lombok-1.16.6.jar
|
||||
32ac0a2363ccc0c5086b62cfc05e28a355b74e155efef6b426f5498a0dfc9e4c /org/projectlombok/lombok/1.16.6/lombok-1.16.6.pom
|
||||
|
||||
@@ -66,4 +66,12 @@ allprojects {
|
||||
}
|
||||
}
|
||||
}
|
||||
project.tasks.all { task ->
|
||||
if (task.name == 'reobfJar') {
|
||||
task.doLast {
|
||||
println 'Manually repacking archive after reobfJar task'
|
||||
project.plugins.findPlugin(de.johni0702.gradle.ReproducibleBuildsPlugin.class).stripJar(task.getJar())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From e9fa8966b42a3d9f35b7aa0153a1466bdddda7c2 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Herzig <me@johni0702.de>
|
||||
Date: Sat, 28 Oct 2017 19:15:34 +0200
|
||||
Subject: [PATCH] Replace plugins block with buildscript
|
||||
|
||||
---
|
||||
build.gradle | 13 +++++++++++--
|
||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index da78c2f..faffc80 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -1,7 +1,16 @@
|
||||
-plugins {
|
||||
- id 'net.minecrell.gitpatcher' version '0.9.0'
|
||||
+buildscript {
|
||||
+ repositories {
|
||||
+ maven {
|
||||
+ url "https://plugins.gradle.org/m2/"
|
||||
+ }
|
||||
+ }
|
||||
+ dependencies {
|
||||
+ classpath "gradle.plugin.net.minecrell:gitpatcher:0.9.0"
|
||||
+ }
|
||||
}
|
||||
|
||||
+apply plugin: "net.minecrell.gitpatcher"
|
||||
+
|
||||
patches {
|
||||
submodule = 'FernFlower'
|
||||
target = file('ForgeFlower')
|
||||
--
|
||||
2.9.5
|
||||
|
||||
@@ -11,15 +11,20 @@ diff --git a/build.gradle b/build.gradle
|
||||
index bfadecd..774a015 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -67,7 +67,7 @@ dependencies {
|
||||
@@ -67,10 +67,10 @@ dependencies {
|
||||
compile 'com.nothome:javaxdelta:2.0.1' // GDIFF implementation for BinPatches
|
||||
compile 'com.google.code.gson:gson:2.2.4' // Used instead of Argo for buuilding changelog.
|
||||
compile 'com.github.tony19:named-regexp:0.2.3' // 1.7 Named regexp features
|
||||
- compile 'net.minecraftforge:fernflower:2.0-SNAPSHOT' // Fernflower Forge edition
|
||||
- compile 'net.minecraftforge:forgeflower:1.0.342-SNAPSHOT' // Fernflower Forge edition
|
||||
+ compile 'reprod:forgeflower:0' // Fernflower Forge edition
|
||||
|
||||
shade 'net.md-5:SpecialSource:1.7.4' // deobf and reobs
|
||||
// compile 'net.md-5:SpecialSource:1.7.4' // when md5 publishes
|
||||
- shade 'net.md-5:SpecialSource:1.8.1-SNAPSHOT' // deobf and reobs
|
||||
- // shade 'net.md-5:SpecialSource:1.8.1' // when md5 publishes
|
||||
+ // shade 'net.md-5:SpecialSource:1.8.1-SNAPSHOT' // deobf and reobs
|
||||
+ shade 'net.md-5:SpecialSource:1.8.1' // when md5 publishes
|
||||
|
||||
// because curse
|
||||
compile 'org.apache.httpcomponents:httpclient:4.3.3'
|
||||
@@ -78,8 +78,8 @@ dependencies {
|
||||
|
||||
// mcp stuff
|
||||
|
||||
@@ -32,7 +32,7 @@ index ee24828..42d0607 100755
|
||||
+ maven { url 'gradle/reprod/deps/repo' }
|
||||
}
|
||||
dependencies {
|
||||
- classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
|
||||
- classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
||||
- classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT'
|
||||
+ classpath 'reprod:forgegradle:0'
|
||||
+ classpath 'reprod:mixingradle:0'
|
||||
|
||||
@@ -106,13 +106,13 @@ trap "kill $proxy_pid" EXIT
|
||||
setup_dep "fernflower" "https://github.com/fesh0r/fernflower.git" "adbf29f8ce902cd164fc0c41491030268ecc8265" "build/libs/fernflower.jar" "d2042d3121118a7175fc902d0e49f4ad37d00467e7ea535574974142eff64184" "901b8a76ceb15db97d4dd19c5e8fcb0fc226ae602ef38ea906eb5258be9b929a"
|
||||
|
||||
# Required for forgegradle
|
||||
setup_dep "forgeflower" "https://github.com/MinecraftForge/FernFlowerLegacy.git" "114aebe82cf40075c5c4f916c409b8aebf8096d5" "build/libs/fernflower-2.0-SNAPSHOT.jar" "c8b4a4a13a1158008aed46da2c805184078324718697f14a67f1778168579956" "fbda3f30d54624fe4c59a69e145b644d8642afc0dd4eb0d732ccdaa0ebd5d8a3"
|
||||
setup_dep "forgeflower" "https://github.com/MinecraftForge/ForgeFlower.git" "41d2b9e00556bc735a2ee4181db7f30db0805816" "ForgeFlower/build/libs/forgeflower-1.0.342-SNAPSHOT.jar" "652d00f6c890c45b56dace444c3e9a7f81b56f510633f183a1fcc50681ba85b9" "79bca0778c764371c62aa9a9496c9fb04b3d8a0ff18047b8e6ef178d3d1ac600"
|
||||
setup_dep "mcinjector" "https://github.com/ModCoderPack/MCInjector.git" "7258466461baf7dc4f313b06b0d589407e4e1fba" "build/libs/mcinjector-3.4-SNAPSHOT.jar" "98b685ea0d3ae9fad8b8a7e7b885512f7fe0b61becf27d9c74b91a626d107efc" "3c08655c11e6509bfc62ff87d0770cefa0ecbd8dccece9e083c9b7b89779a8c5"
|
||||
setup_dep "srg2source" "https://github.com/MinecraftForge/Srg2Source.git" "ea4ea624672e8b75fb2a78f0fb9105db13d5a4a6" "build/libs/Srg2Source-4.0-SNAPSHOT.jar" "727445a7b946535217be658726c537acf1921f0a9e2ac0ea717dff9b36dc529f" "4ebd7b738f368ee5c25a1028a167257e7012cef7c72c8b5b06149286992c631e"
|
||||
|
||||
# Required for RM
|
||||
setup_dep "mixingradle" "https://github.com/SpongePowered/MixinGradle.git" "52217aa8ca221dcd0b9fb657b037e663db808f38" "build/libs/mixingradle-0.4-SNAPSHOT.jar" "8b3508867128a5d564631635dff898a36f9aca8db54b7bb3af6f4924e3f4bead" "42cbf81136d4e26c06d3234427665b50d18768cc1f210512204ca1d5e3a42b5c"
|
||||
setup_dep "forgegradle" "https://github.com/MinecraftForge/ForgeGradle.git" "d13a6c892f51937567b3d01d85bea4f3d128e71d" "build/libs/ForgeGradle-2.2-SNAPSHOT.jar" "355a8bd6f49f3d11c40d58da9bb388e05b634ddfac43ab222bf2326aa40f0be4" "45966ee785c42e34c36be3e73046aca1a581a919fb02a9028970d19d35488b18"
|
||||
setup_dep "forgegradle" "https://github.com/MinecraftForge/ForgeGradle.git" "f49079dd11c037f74cc740285b2c5504fbf8a7f6" "build/libs/ForgeGradle-2.3-SNAPSHOT.jar" "8272cf68ae269c315969e3e94a41bdffe1cf96cfbc6d701cafda90ab19ef5f94" "9261c0855a19d86434c6f9e784265d91e3e3c9f12b29dd90f41efacd15add41e"
|
||||
setup_dep "mixin" "https://github.com/SpongePowered/Mixin.git" "404f5da0b6b18980b4e44c7f1cfeddcd47fe4aa6" "build/libs/mixin-0.7.5-SNAPSHOT.jar" "7d181a5e7c317c00c07da14e7770e4356b0f201414cd2a836e987be9fa133d43" "11000383a5051f25a70c2bff3a3167b6859ae4f9838a0ab45560e9f9c9d9def7"
|
||||
|
||||
rm -rf tmp
|
||||
|
||||
2
jGui
2
jGui
Submodule jGui updated: b5fdbb85e1...46c3086257
@@ -299,7 +299,7 @@ public abstract class AbstractTask implements Task {
|
||||
return;
|
||||
}
|
||||
|
||||
clickNow(button.xPosition + 5, button.yPosition + 5);
|
||||
clickNow(button.x + 5, button.y + 5);
|
||||
} catch (IllegalAccessException | NoSuchFieldException e) {
|
||||
future.setException(e);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,11 @@ public class ReplayModIntegrationTest {
|
||||
// Make sure the game window doesn't have to remain in focus during the test
|
||||
mc.gameSettings.pauseOnLostFocus = false;
|
||||
|
||||
// Vanilla uses our keys
|
||||
mc.gameSettings.keyBindAdvancements.setKeyCode(0);
|
||||
mc.gameSettings.keyBindLoadToolbar.setKeyCode(0);
|
||||
mc.gameSettings.keyBindSaveToolbar.setKeyCode(0);
|
||||
|
||||
runTasks(
|
||||
new SkipLogin(),
|
||||
new DownloadOpenEye(),
|
||||
|
||||
@@ -10,6 +10,10 @@ import java.nio.file.NoSuchFileException;
|
||||
public class DownloadOpenEye extends AbstractTask {
|
||||
@Override
|
||||
protected void init() {
|
||||
if ("1".equals(System.getenv("RM_INTEGRATION_TEST_NO_OPENEYE"))) {
|
||||
runLater(() -> future.set(null));
|
||||
return;
|
||||
}
|
||||
expectGui(OpenEyeExtra.OfferGui.class, offerGui -> {
|
||||
click(offerGui.yesButton);
|
||||
expectGuiClosed(20 * 1000, () -> {
|
||||
|
||||
@@ -34,7 +34,7 @@ public class SpectatePlayer extends AbstractTask {
|
||||
future.setException(new TimeoutException("Camera hasn't stopped spectating."));
|
||||
return;
|
||||
}
|
||||
if (mc.getRenderViewEntity() == mc.thePlayer) {
|
||||
if (mc.getRenderViewEntity() == mc.player) {
|
||||
future.set(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,17 +56,17 @@ public class DisableBetterSprinting {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public void beforeGuiOpenEvent(GuiOpenEvent event) {
|
||||
if (ReplayModReplay.instance.getReplayHandler() != null && mc.theWorld != null) {
|
||||
if (ReplayModReplay.instance.getReplayHandler() != null && mc.world != null) {
|
||||
// During replay, get ready to revert BetterSprinting's overwritten playerController
|
||||
originalController = mc.playerController;
|
||||
mc.theWorld.addEventListener(worldAccessHook);
|
||||
mc.world.addEventListener(worldAccessHook);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void afterGuiOpenEvent(GuiOpenEvent event) {
|
||||
if (ReplayModReplay.instance.getReplayHandler() != null && mc.theWorld != null) {
|
||||
mc.theWorld.addEventListener(worldAccessHook);
|
||||
if (ReplayModReplay.instance.getReplayHandler() != null && mc.world != null) {
|
||||
mc.world.addEventListener(worldAccessHook);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@ public class DisableBetterSprinting {
|
||||
@Override public void playSoundToAllNearExcept(@Nullable EntityPlayer player, SoundEvent soundIn, SoundCategory category, double x, double y, double z, float volume, float pitch) {}
|
||||
@Override public void playRecord(SoundEvent soundIn, BlockPos pos) {}
|
||||
@Override public void spawnParticle(int p_180442_1_, boolean p_180442_2_, double p_180442_3_, double p_180442_5_, double p_180442_7_, double p_180442_9_, double p_180442_11_, double p_180442_13_, int... p_180442_15_) {}
|
||||
@Override public void spawnParticle(int p_190570_1_, boolean p_190570_2_, boolean p_190570_3_, double p_190570_4_, double p_190570_6_, double p_190570_8_, double p_190570_10_, double p_190570_12_, double p_190570_14_, int... p_190570_16_) {}
|
||||
@Override public void onEntityAdded(Entity entityIn) {}
|
||||
@Override public void broadcastSound(int p_180440_1_, BlockPos p_180440_2_, int p_180440_3_) {}
|
||||
@Override public void playEvent(EntityPlayer player, int type, BlockPos blockPosIn, int data) {}
|
||||
|
||||
@@ -20,7 +20,7 @@ public class HideInvisibleEntities {
|
||||
@SubscribeEvent(priority = EventPriority.HIGH)
|
||||
public void preRenderLiving(RenderLivingEvent.Pre event) {
|
||||
if (modLoaded) {
|
||||
if (mc.thePlayer instanceof CameraEntity && event.getEntity().isInvisible()) {
|
||||
if (mc.player instanceof CameraEntity && event.getEntity().isInvisible()) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class ShaderBeginRender {
|
||||
// check if Shaders are enabled
|
||||
if (!(boolean) (ShaderReflection.config_isShaders.invoke(null))) return;
|
||||
|
||||
ShaderReflection.shaders_beginRender.invoke(null, mc, mc.timer.elapsedPartialTicks, 0);
|
||||
ShaderReflection.shaders_beginRender.invoke(null, mc, mc.timer.renderPartialTicks, 0);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ public abstract class MixinShaderRenderChunk {
|
||||
*/
|
||||
@Inject(method = "isPlayerUpdate", at = @At("HEAD"), cancellable = true)
|
||||
private void replayModCompat_disableIsPlayerUpdate(CallbackInfoReturnable<Boolean> ci) {
|
||||
// TODO: Update to 1.12 once optifine is available
|
||||
if (((EntityRendererHandler.IEntityRenderer) mc.entityRenderer).replayModRender_getHandler() == null) return;
|
||||
ci.setReturnValue(true);
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class KeyBindingRegistry {
|
||||
CrashReport crashReport = CrashReport.makeCrashReport(cause, "Handling Key Binding");
|
||||
CrashReportCategory category = crashReport.makeCategory("Key Binding");
|
||||
category.addCrashSection("Key Binding", keyBinding);
|
||||
category.setDetail("Handler", runnable::toString);
|
||||
category.addDetail("Handler", runnable::toString);
|
||||
throw new ReportedException(crashReport);
|
||||
}
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public class KeyBindingRegistry {
|
||||
CrashReport crashReport = CrashReport.makeCrashReport(cause, "Handling Raw Key Binding");
|
||||
CrashReportCategory category = crashReport.makeCategory("Key Binding");
|
||||
category.addCrashSection("Key Code", keyCode);
|
||||
category.setDetail("Handler", runnable::toString);
|
||||
category.addDetail("Handler", runnable::toString);
|
||||
throw new ReportedException(crashReport);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,30 +15,17 @@ public class GuiFactory implements IModGuiFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends GuiScreen> mainConfigGuiClass() {
|
||||
return ConfigGuiWrapper.class;
|
||||
public boolean hasConfigGui() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuiScreen createConfigGui(GuiScreen parentScreen) {
|
||||
return new GuiReplaySettings(parentScreen, ReplayMod.instance.getSettingsRegistry()).toMinecraft();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static class ConfigGuiWrapper extends GuiScreen {
|
||||
private final GuiScreen parent;
|
||||
|
||||
public ConfigGuiWrapper(GuiScreen parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
new GuiReplaySettings(parent, ReplayMod.instance.getSettingsRegistry()).display();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,14 @@ package com.replaymod.core.handler;
|
||||
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiMainMenu;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiScreenRealmsProxy;
|
||||
import net.minecraftforge.client.event.GuiScreenEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Moves certain buttons on the main menu upwards so we can inject our own.
|
||||
@@ -17,15 +22,66 @@ public class MainMenuHandler {
|
||||
@SubscribeEvent
|
||||
public void onInit(GuiScreenEvent.InitGuiEvent.Post event) {
|
||||
if (event.getGui() instanceof GuiMainMenu) {
|
||||
GuiMainMenu gui = (GuiMainMenu) event.getGui();
|
||||
int realmsOffset = 0;
|
||||
for (GuiButton button : event.getButtonList()) {
|
||||
// Buttons that aren't in a rectangle directly above our space don't need moving
|
||||
if (button.xPosition + button.width < event.getGui().width / 2 - 100
|
||||
|| button.xPosition > event.getGui().width / 2 + 100
|
||||
|| button.yPosition > event.getGui().height / 4 + 10 + 4 * 24) continue;
|
||||
if (button.x + button.width < event.getGui().width / 2 - 100
|
||||
|| button.x > event.getGui().width / 2 + 100
|
||||
|| button.y > event.getGui().height / 4 + 10 + 4 * 24) continue;
|
||||
// Move button up to make space for two rows of buttons
|
||||
// and then move back down by 10 to compensate for the space to the exit button that was already there
|
||||
button.yPosition -= 2 * 24 - 10;
|
||||
int offset = -2 * 24 + 10;
|
||||
button.y += offset;
|
||||
if (button == gui.realmsButton) {
|
||||
realmsOffset = offset;
|
||||
}
|
||||
}
|
||||
if (realmsOffset != 0 && gui.realmsNotification instanceof GuiScreenRealmsProxy) {
|
||||
gui.realmsNotification = new RealmsNotificationProxy((GuiScreenRealmsProxy) gui.realmsNotification, realmsOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class RealmsNotificationProxy extends GuiScreen {
|
||||
private final GuiScreenRealmsProxy proxy;
|
||||
private final int offset;
|
||||
|
||||
private RealmsNotificationProxy(GuiScreenRealmsProxy proxy, int offset) {
|
||||
this.proxy = proxy;
|
||||
this.offset = offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGuiSize(int w, int h) {
|
||||
proxy.setGuiSize(w, h);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
proxy.initGui();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen() {
|
||||
proxy.updateScreen();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
GL11.glTranslated(0, offset, 0);
|
||||
proxy.drawScreen(mouseX, mouseY - offset, partialTicks);
|
||||
GL11.glTranslated(0, -offset, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
|
||||
proxy.mouseClicked(mouseX, mouseY - offset, mouseButton);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
proxy.onGuiClosed();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,22 +4,22 @@ import com.replaymod.replaystudio.data.ModInfo;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.ModContainer;
|
||||
import net.minecraftforge.fml.common.registry.GameData;
|
||||
import net.minecraftforge.registries.ForgeRegistry;
|
||||
import net.minecraftforge.registries.RegistryManager;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class ModCompat {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Collection<ModInfo> getInstalledNetworkMods() {
|
||||
Map<String, ModContainer> ignoreCaseMap = Loader.instance().getModList().stream()
|
||||
.collect(Collectors.toMap(m -> m.getModId().toLowerCase(), Function.identity()));
|
||||
return Stream.concat(
|
||||
((Set<ResourceLocation>) GameData.getBlockRegistry().getKeys()).stream(),
|
||||
((Set<ResourceLocation>) GameData.getItemRegistry().getKeys()).stream()
|
||||
).map(ResourceLocation::getResourceDomain).filter(s -> !s.equals("minecraft")).distinct()
|
||||
return RegistryManager.ACTIVE.takeSnapshot(false).keySet().stream()
|
||||
.map(RegistryManager.ACTIVE::getRegistry)
|
||||
.map(ForgeRegistry::getKeys).flatMap(Set::stream)
|
||||
.map(ResourceLocation::getResourceDomain).filter(s -> !s.equals("minecraft")).distinct()
|
||||
.map(String::toLowerCase).map(ignoreCaseMap::get).filter(mod -> mod != null)
|
||||
.map(mod -> new ModInfo(mod.getModId(), mod.getName(), mod.getVersion()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.replaymod.core.utils;
|
||||
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.VertexBuffer;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
@@ -35,7 +35,7 @@ public class OpenGLUtils {
|
||||
float f5 = 1.0F / textureHeight;
|
||||
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
VertexBuffer vertexBuffer = tessellator.getBuffer();
|
||||
BufferBuilder vertexBuffer = tessellator.getBuffer();
|
||||
GlStateManager.translate(x+(width/2), y+(width/2), 0);
|
||||
GlStateManager.rotate(rotation, 0, 0, 1);
|
||||
vertexBuffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
||||
|
||||
@@ -17,7 +17,7 @@ public class Restrictions {
|
||||
public String handle(SPacketCustomPayload packet) {
|
||||
PacketBuffer buffer = packet.getBufferData();
|
||||
while (buffer.isReadable()) {
|
||||
String name = buffer.readStringFromBuffer(64);
|
||||
String name = buffer.readString(64);
|
||||
boolean active = buffer.readBoolean();
|
||||
// if ("no_xray".equals(name)) {
|
||||
// noXray = active;
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.replaymod.core.utils;
|
||||
import net.minecraft.util.Timer;
|
||||
|
||||
public class WrappedTimer extends Timer {
|
||||
public static final float DEFAULT_MS_PER_TICK = 1000 / 20;
|
||||
|
||||
protected final Timer wrapped;
|
||||
|
||||
public WrappedTimer(Timer wrapped) {
|
||||
@@ -19,15 +21,10 @@ public class WrappedTimer extends Timer {
|
||||
}
|
||||
|
||||
protected void copy(Timer from, Timer to) {
|
||||
to.ticksPerSecond = from.ticksPerSecond;
|
||||
to.lastHRTime = from.lastHRTime;
|
||||
to.elapsedTicks = from.elapsedTicks;
|
||||
to.renderPartialTicks = from.renderPartialTicks;
|
||||
to.timerSpeed = from.timerSpeed;
|
||||
to.elapsedPartialTicks = from.elapsedPartialTicks;
|
||||
to.lastSyncSysClock = from.lastSyncSysClock;
|
||||
to.lastSyncHRClock = from.lastSyncHRClock;
|
||||
to.counter = from.counter;
|
||||
to.timeSyncAdjustment = from.timeSyncAdjustment;
|
||||
to.elapsedPartialTicks = from.elapsedPartialTicks;
|
||||
to.tickLength = from.tickLength;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import java.nio.channels.FileChannel;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
|
||||
import static com.replaymod.core.utils.Utils.SSL_SOCKET_FACTORY;
|
||||
import static com.replaymod.extras.ReplayModExtras.LOGGER;
|
||||
|
||||
public class OpenEyeExtra implements Extra {
|
||||
private static final String DOWNLOAD_URL = "https://www.replaymod.com/dl/openeye/" + Loader.MC_VERSION;
|
||||
@@ -39,7 +40,25 @@ public class OpenEyeExtra implements Extra {
|
||||
mod.getSettingsRegistry().register(ASK_FOR_OPEN_EYE);
|
||||
|
||||
if (!Loader.isModLoaded("OpenEye") && mod.getSettingsRegistry().get(ASK_FOR_OPEN_EYE)) {
|
||||
mod.runLater(() -> new OfferGui(GuiScreen.wrap(mod.getMinecraft().currentScreen)).display());
|
||||
new Thread(() -> {
|
||||
try {
|
||||
LOGGER.trace("Checking for OpenEye availability");
|
||||
HttpsURLConnection connection = (HttpsURLConnection) new URL(DOWNLOAD_URL).openConnection();
|
||||
connection.setSSLSocketFactory(SSL_SOCKET_FACTORY);
|
||||
connection.setRequestMethod("HEAD");
|
||||
connection.connect();
|
||||
LOGGER.trace("Got response code: {}", connection.getResponseCode());
|
||||
if (connection.getResponseCode() == 200) {
|
||||
mod.runLater(() -> new OfferGui(GuiScreen.wrap(mod.getMinecraft().currentScreen)).display());
|
||||
} else {
|
||||
LOGGER.info("Cannot offer OpenEye, server returned: {} {}",
|
||||
connection.getResponseCode(), connection.getResponseMessage());
|
||||
}
|
||||
connection.disconnect();
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error("Failed to check for OpenEye availability:", e);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ public class PlayerOverview implements Extra {
|
||||
public void run() {
|
||||
if (module.getReplayHandler() != null) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<EntityPlayer> players = mod.getMinecraft().theWorld.getPlayers(EntityPlayer.class, new Predicate() {
|
||||
List<EntityPlayer> players = mod.getMinecraft().world.getPlayers(EntityPlayer.class, new Predicate() {
|
||||
@Override
|
||||
public boolean apply(Object input) {
|
||||
return !(input instanceof CameraEntity); // Exclude the camera entity
|
||||
|
||||
@@ -3,7 +3,13 @@ package com.replaymod.online.api.replay.holders;
|
||||
public enum MinecraftVersion {
|
||||
|
||||
MC_1_8("Minecraft 1.8", "1.8"),
|
||||
MC_1_9_4("Minecraft 1.9.4", "1.9.4");
|
||||
MC_1_9_4("Minecraft 1.9.4", "1.9.4"),
|
||||
MC_1_10_2("Minecraft 1.10.2", "1.10.2"),
|
||||
MC_1_11("Minecraft 1.11", "1.11"),
|
||||
MC_1_11_2("Minecraft 1.11.2", "1.11.2"),
|
||||
MC_1_12("Minecraft 1.12", "1.12"),
|
||||
MC_1_12_1("Minecraft 1.12.1", "1.12.1"),
|
||||
MC_1_12_2("Minecraft 1.12.2", "1.12.2");
|
||||
|
||||
private String niceName, apiName;
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public class GuiRegister extends AbstractGuiScreen<GuiRegister> {
|
||||
pos(cancelButton, width / 2 + 2, 170);
|
||||
pos(statusLabel, width / 2 - statusLabel.getMinSize().getWidth() / 2, 152);
|
||||
|
||||
FontRenderer font = getMinecraft().fontRendererObj;
|
||||
FontRenderer font = getMinecraft().fontRenderer;
|
||||
int lineCount = font.listFormattedStringToWidth(disclaimerLabel.getText(), width - 10).size();
|
||||
Dimension dim = new Dimension(width - 10, font.FONT_HEIGHT * lineCount);
|
||||
disclaimerLabel.setSize(dim);
|
||||
|
||||
@@ -37,7 +37,7 @@ import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||
import de.johni0702.minecraft.gui.popup.GuiYesNoPopup;
|
||||
import de.johni0702.minecraft.gui.utils.Colors;
|
||||
import de.johni0702.minecraft.gui.utils.Consumer;
|
||||
import org.apache.logging.log4j.core.helpers.Strings;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.lwjgl.util.Dimension;
|
||||
import org.lwjgl.util.ReadableDimension;
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.Ordering;
|
||||
import com.google.common.primitives.Longs;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.SettableFuture;
|
||||
import com.replaymod.core.utils.WrappedTimer;
|
||||
import com.replaymod.replay.ReplayHandler;
|
||||
import com.replaymod.replaystudio.pathing.path.Keyframe;
|
||||
import com.replaymod.replaystudio.pathing.path.Path;
|
||||
@@ -68,8 +69,8 @@ public abstract class AbstractTimelinePlayer {
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
lastTime = 0;
|
||||
mc.timer = new ReplayTimer(mc.timer);
|
||||
mc.timer.timerSpeed = 1;
|
||||
mc.timer.elapsedPartialTicks = mc.timer.elapsedTicks = 0;
|
||||
mc.timer.tickLength = WrappedTimer.DEFAULT_MS_PER_TICK;
|
||||
mc.timer.renderPartialTicks = mc.timer.elapsedTicks = 0;
|
||||
return future = settableFuture = SettableFuture.create();
|
||||
}
|
||||
|
||||
@@ -107,10 +108,9 @@ public abstract class AbstractTimelinePlayer {
|
||||
float timeInTicks = replayTime / 50f;
|
||||
float previousTimeInTicks = lastTime / 50f;
|
||||
float passedTicks = timeInTicks - previousTimeInTicks;
|
||||
mc.timer.elapsedPartialTicks += passedTicks;
|
||||
mc.timer.elapsedTicks = (int) mc.timer.elapsedPartialTicks;
|
||||
mc.timer.elapsedPartialTicks -= mc.timer.elapsedTicks;
|
||||
mc.timer.renderPartialTicks = mc.timer.elapsedPartialTicks;
|
||||
mc.timer.renderPartialTicks += passedTicks;
|
||||
mc.timer.elapsedTicks = (int) mc.timer.renderPartialTicks;
|
||||
mc.timer.renderPartialTicks -= mc.timer.elapsedTicks;
|
||||
|
||||
lastTime = replayTime;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public class GuiRecordingOverlay {
|
||||
public void renderRecordingIndicator(RenderGameOverlayEvent.Post event) {
|
||||
if (event.getType() != RenderGameOverlayEvent.ElementType.ALL) return;
|
||||
if (settingsRegistry.get(Setting.INDICATOR)) {
|
||||
FontRenderer fontRenderer = mc.fontRendererObj;
|
||||
FontRenderer fontRenderer = mc.fontRenderer;
|
||||
fontRenderer.drawString(I18n.format("replaymod.gui.recording").toUpperCase(), 30, 18 - (fontRenderer.FONT_HEIGHT / 2), 0xffffffff);
|
||||
mc.renderEngine.bindTexture(TEXTURE);
|
||||
GlStateManager.resetColor();
|
||||
|
||||
@@ -47,7 +47,7 @@ public class ConnectionEventHandler {
|
||||
try {
|
||||
boolean local = networkManager.isLocalChannel();
|
||||
if (local) {
|
||||
if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType.DEBUG_WORLD) {
|
||||
if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType.DEBUG_ALL_BLOCK_STATES) {
|
||||
logger.info("Debug World recording is not supported.");
|
||||
return;
|
||||
}
|
||||
@@ -67,6 +67,9 @@ public class ConnectionEventHandler {
|
||||
worldName = mc.getIntegratedServer().getWorldName();
|
||||
} else if (Minecraft.getMinecraft().getCurrentServerData() != null) {
|
||||
worldName = Minecraft.getMinecraft().getCurrentServerData().serverIP;
|
||||
} else if (Minecraft.getMinecraft().isConnectedToRealms()) {
|
||||
// we can't access the server name without tapping too deep in the Realms Library
|
||||
worldName = "A Realms Server";
|
||||
} else {
|
||||
logger.info("Recording not started as the world is neither local nor remote (probably a replay).");
|
||||
return;
|
||||
|
||||
@@ -57,7 +57,7 @@ public class RecordingEventHandler {
|
||||
|
||||
public void onPlayerJoin() {
|
||||
try {
|
||||
packetListener.save(new SPacketSpawnPlayer(mc.thePlayer));
|
||||
packetListener.save(new SPacketSpawnPlayer(mc.player));
|
||||
} catch(Exception e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
@@ -65,7 +65,7 @@ public class RecordingEventHandler {
|
||||
|
||||
public void onPlayerRespawn() {
|
||||
try {
|
||||
packetListener.save(new SPacketSpawnPlayer(mc.thePlayer));
|
||||
packetListener.save(new SPacketSpawnPlayer(mc.player));
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -93,7 +93,7 @@ public class RecordingEventHandler {
|
||||
@SubscribeEvent
|
||||
public void onPlayerTick(PlayerTickEvent e) {
|
||||
try {
|
||||
if(e.player != mc.thePlayer) return;
|
||||
if(e.player != mc.player) return;
|
||||
|
||||
boolean force = false;
|
||||
if(lastX == null || lastY == null || lastZ == null) {
|
||||
@@ -168,62 +168,62 @@ public class RecordingEventHandler {
|
||||
*/
|
||||
|
||||
//Inventory Handling
|
||||
if (playerItems[0] != mc.thePlayer.getHeldItem(EnumHand.MAIN_HAND)) {
|
||||
playerItems[0] = mc.thePlayer.getHeldItem(EnumHand.MAIN_HAND);
|
||||
if (playerItems[0] != mc.player.getHeldItem(EnumHand.MAIN_HAND)) {
|
||||
playerItems[0] = mc.player.getHeldItem(EnumHand.MAIN_HAND);
|
||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.MAINHAND, playerItems[0]));
|
||||
}
|
||||
|
||||
if (playerItems[1] != mc.thePlayer.getHeldItem(EnumHand.OFF_HAND)) {
|
||||
playerItems[1] = mc.thePlayer.getHeldItem(EnumHand.OFF_HAND);
|
||||
if (playerItems[1] != mc.player.getHeldItem(EnumHand.OFF_HAND)) {
|
||||
playerItems[1] = mc.player.getHeldItem(EnumHand.OFF_HAND);
|
||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.OFFHAND, playerItems[1]));
|
||||
}
|
||||
|
||||
if (playerItems[2] != mc.thePlayer.inventory.armorInventory[0]) {
|
||||
playerItems[2] = mc.thePlayer.inventory.armorInventory[0];
|
||||
if (playerItems[2] != mc.player.getItemStackFromSlot(EntityEquipmentSlot.FEET)) {
|
||||
playerItems[2] = mc.player.getItemStackFromSlot(EntityEquipmentSlot.FEET);
|
||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.FEET, playerItems[2]));
|
||||
}
|
||||
|
||||
if (playerItems[3] != mc.thePlayer.inventory.armorInventory[1]) {
|
||||
playerItems[3] = mc.thePlayer.inventory.armorInventory[1];
|
||||
if (playerItems[3] != mc.player.getItemStackFromSlot(EntityEquipmentSlot.LEGS)) {
|
||||
playerItems[3] = mc.player.getItemStackFromSlot(EntityEquipmentSlot.LEGS);
|
||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.LEGS, playerItems[3]));
|
||||
}
|
||||
|
||||
if (playerItems[4] != mc.thePlayer.inventory.armorInventory[2]) {
|
||||
playerItems[4] = mc.thePlayer.inventory.armorInventory[2];
|
||||
if (playerItems[4] != mc.player.getItemStackFromSlot(EntityEquipmentSlot.CHEST)) {
|
||||
playerItems[4] = mc.player.getItemStackFromSlot(EntityEquipmentSlot.CHEST);
|
||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.CHEST, playerItems[4]));
|
||||
}
|
||||
|
||||
if (playerItems[5] != mc.thePlayer.inventory.armorInventory[3]) {
|
||||
playerItems[5] = mc.thePlayer.inventory.armorInventory[3];
|
||||
if (playerItems[5] != mc.player.getItemStackFromSlot(EntityEquipmentSlot.HEAD)) {
|
||||
playerItems[5] = mc.player.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
|
||||
packetListener.save(new SPacketEntityEquipment(e.player.getEntityId(), EntityEquipmentSlot.HEAD, playerItems[5]));
|
||||
}
|
||||
|
||||
//Leaving Ride
|
||||
|
||||
if((!mc.thePlayer.isRiding() && lastRiding != -1) ||
|
||||
(mc.thePlayer.isRiding() && lastRiding != mc.thePlayer.getRidingEntity().getEntityId())) {
|
||||
if(!mc.thePlayer.isRiding()) {
|
||||
if((!mc.player.isRiding() && lastRiding != -1) ||
|
||||
(mc.player.isRiding() && lastRiding != mc.player.getRidingEntity().getEntityId())) {
|
||||
if(!mc.player.isRiding()) {
|
||||
lastRiding = -1;
|
||||
} else {
|
||||
lastRiding = mc.thePlayer.getRidingEntity().getEntityId();
|
||||
lastRiding = mc.player.getRidingEntity().getEntityId();
|
||||
}
|
||||
packetListener.save(new SPacketEntityAttach(e.player, e.player.getRidingEntity()));
|
||||
}
|
||||
|
||||
//Sleeping
|
||||
if(!mc.thePlayer.isPlayerSleeping() && wasSleeping) {
|
||||
if(!mc.player.isPlayerSleeping() && wasSleeping) {
|
||||
packetListener.save(new SPacketAnimation(e.player, 2));
|
||||
wasSleeping = false;
|
||||
}
|
||||
|
||||
// Active hand (e.g. eating, drinking, blocking)
|
||||
if (mc.thePlayer.isHandActive() ^ wasHandActive || mc.thePlayer.getActiveHand() != lastActiveHand) {
|
||||
wasHandActive = mc.thePlayer.isHandActive();
|
||||
lastActiveHand = mc.thePlayer.getActiveHand();
|
||||
if (mc.player.isHandActive() ^ wasHandActive || mc.player.getActiveHand() != lastActiveHand) {
|
||||
wasHandActive = mc.player.isHandActive();
|
||||
lastActiveHand = mc.player.getActiveHand();
|
||||
EntityDataManager dataManager = new EntityDataManager(null);
|
||||
int state = (wasHandActive ? 1 : 0) | (lastActiveHand == EnumHand.OFF_HAND ? 2 : 0);
|
||||
dataManager.register(EntityLiving.HAND_STATES, (byte) state);
|
||||
packetListener.save(new SPacketEntityMetadata(mc.thePlayer.getEntityId(), dataManager, true));
|
||||
packetListener.save(new SPacketEntityMetadata(mc.player.getEntityId(), dataManager, true));
|
||||
}
|
||||
|
||||
} catch(Exception e1) {
|
||||
@@ -234,7 +234,8 @@ public class RecordingEventHandler {
|
||||
@SubscribeEvent
|
||||
public void onPickupItem(ItemPickupEvent event) {
|
||||
try {
|
||||
packetListener.save(new SPacketCollectItem(event.pickedUp.getEntityId(), event.player.getEntityId()));
|
||||
packetListener.save(new SPacketCollectItem(event.pickedUp.getEntityId(), event.player.getEntityId(),
|
||||
event.pickedUp.getItem().getMaxStackSize()));
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -243,7 +244,7 @@ public class RecordingEventHandler {
|
||||
@SubscribeEvent
|
||||
public void onSleep(PlayerSleepInBedEvent event) {
|
||||
try {
|
||||
if (event.getEntityPlayer() != mc.thePlayer) {
|
||||
if (event.getEntityPlayer() != mc.player) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -259,7 +260,7 @@ public class RecordingEventHandler {
|
||||
@SubscribeEvent
|
||||
public void enterMinecart(MinecartInteractEvent event) {
|
||||
try {
|
||||
if(event.getEntity() != mc.thePlayer) {
|
||||
if(event.getEntity() != mc.player) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -272,7 +273,7 @@ public class RecordingEventHandler {
|
||||
}
|
||||
|
||||
public void onBlockBreakAnim(int breakerId, BlockPos pos, int progress) {
|
||||
EntityPlayer thePlayer = mc.thePlayer;
|
||||
EntityPlayer thePlayer = mc.player;
|
||||
if (thePlayer != null && breakerId == thePlayer.getEntityId()) {
|
||||
packetListener.save(new SPacketBlockBreakAnim(breakerId, pos, progress));
|
||||
}
|
||||
|
||||
@@ -24,4 +24,9 @@ public abstract class MixinNetHandlerLoginClient {
|
||||
public void replayModRecording_initiateRecording(CallbackInfo cb) {
|
||||
ReplayModRecording.instance.initiateRecording(networkManager);
|
||||
}
|
||||
|
||||
@Inject(method = "handleLoginSuccess", at=@At("RETURN"))
|
||||
public void replayModRecording_raceConditionWorkAround(CallbackInfo cb) {
|
||||
networkManager.channel().config().setAutoRead(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,14 +37,14 @@ public abstract class MixinNetHandlerPlayClient {
|
||||
*/
|
||||
@Inject(method = "handlePlayerListItem", at=@At("HEAD"))
|
||||
public void recordOwnJoin(SPacketPlayerListItem packet, CallbackInfo ci) {
|
||||
if (gameController.thePlayer == null) return;
|
||||
if (gameController.player == null) return;
|
||||
|
||||
RecordingEventHandler handler = getRecordingEventHandler();
|
||||
if (handler != null && packet.getAction() == SPacketPlayerListItem.Action.ADD_PLAYER) {
|
||||
for (SPacketPlayerListItem.AddPlayerData data : packet.getEntries()) {
|
||||
if (data.getProfile() == null || data.getProfile().getId() == null) continue;
|
||||
// Only add spawn packet for our own player and only if he isn't known yet
|
||||
if (data.getProfile().getId().equals(Minecraft.getMinecraft().thePlayer.getGameProfile().getId())
|
||||
if (data.getProfile().getId().equals(Minecraft.getMinecraft().player.getGameProfile().getId())
|
||||
&& !playerInfoMap.containsKey(data.getProfile().getId())) {
|
||||
handler.onPlayerJoin();
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.replaymod.recording.mixin;
|
||||
|
||||
import com.replaymod.recording.handler.FMLHandshakeFilter;
|
||||
import io.netty.channel.ChannelConfig;
|
||||
import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.embedded.EmbeddedChannel;
|
||||
import net.minecraft.network.EnumConnectionState;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraftforge.fml.common.network.handshake.FMLHandshakeCodec;
|
||||
import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
@@ -10,6 +13,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = NetworkDispatcher.class, remap = false)
|
||||
@@ -43,4 +47,17 @@ public abstract class MixinNetworkDispatcher {
|
||||
"replaymod_filter", new FMLHandshakeFilter());
|
||||
}
|
||||
}
|
||||
|
||||
@Redirect(method = "clientListenForServerHandshake", at = @At(value = "INVOKE", remap = true, target =
|
||||
"Lnet/minecraft/network/NetworkManager;setConnectionState(Lnet/minecraft/network/EnumConnectionState;)V"))
|
||||
public void replayModRecording_raceConditionWorkAround1(NetworkManager self, EnumConnectionState ignored) { }
|
||||
|
||||
@Redirect(method = "insertIntoChannel", at = @At(value = "INVOKE", target =
|
||||
"Lio/netty/channel/ChannelConfig;setAutoRead(Z)Lio/netty/channel/ChannelConfig;"))
|
||||
public ChannelConfig replayModRecording_raceConditionWorkAround2(ChannelConfig self, boolean autoRead) {
|
||||
if (side == Side.CLIENT) {
|
||||
autoRead = false;
|
||||
}
|
||||
return self.setAutoRead(autoRead);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,6 @@ public abstract class MixinPlayerControllerMP implements RecordingEventHandler.R
|
||||
@Redirect(method = "onPlayerDestroyBlock", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/World;playEvent(ILnet/minecraft/util/math/BlockPos;I)V"))
|
||||
public void replayModRecording_playEvent_fixed(World world, int type, BlockPos pos, int data) {
|
||||
world.playEvent(mc.thePlayer, type, pos, data);
|
||||
world.playEvent(mc.player, type, pos, data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa
|
||||
at = @At("HEAD"))
|
||||
public void replayModRecording_recordClientSound(EntityPlayer player, double x, double y, double z, SoundEvent sound, SoundCategory category,
|
||||
float volume, float pitch, CallbackInfo ci) {
|
||||
if (player == mc.thePlayer) {
|
||||
if (player == mc.player) {
|
||||
RecordingEventHandler handler = replayModRecording_getRecordingEventHandler();
|
||||
if (handler != null) {
|
||||
handler.onClientSound(sound, category, x, y, z, volume, pitch);
|
||||
@@ -51,7 +51,7 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa
|
||||
// These are handled in the World class, so we override the method in WorldClient and add our special handling.
|
||||
@Override
|
||||
public void playEvent(EntityPlayer player, int type, BlockPos pos, int data) {
|
||||
if (player == mc.thePlayer) {
|
||||
if (player == mc.player) {
|
||||
// We caused this event, the server won't send it to us
|
||||
RecordingEventHandler handler = replayModRecording_getRecordingEventHandler();
|
||||
if (handler != null) {
|
||||
|
||||
@@ -160,8 +160,8 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
Packet packet = (Packet) msg;
|
||||
|
||||
if(packet instanceof SPacketCollectItem) {
|
||||
if(mc.thePlayer != null ||
|
||||
((SPacketCollectItem) packet).getEntityID() == mc.thePlayer.getEntityId()) {
|
||||
if(mc.player != null ||
|
||||
((SPacketCollectItem) packet).getEntityID() == mc.player.getEntityId()) {
|
||||
super.channelRead(ctx, msg);
|
||||
return;
|
||||
}
|
||||
@@ -202,7 +202,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private byte[] getPacketData(Packet packet) throws IOException {
|
||||
private byte[] getPacketData(Packet packet) throws Exception {
|
||||
if (packet instanceof SPacketSpawnMob) {
|
||||
SPacketSpawnMob p = (SPacketSpawnMob) packet;
|
||||
if (p.dataManager == null) {
|
||||
@@ -233,7 +233,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter {
|
||||
}
|
||||
ByteBuf byteBuf = Unpooled.buffer();
|
||||
PacketBuffer packetBuffer = new PacketBuffer(byteBuf);
|
||||
packetBuffer.writeVarIntToBuffer(packetId);
|
||||
packetBuffer.writeVarInt(packetId);
|
||||
packet.writePacketData(packetBuffer);
|
||||
|
||||
byteBuf.readerIndex(0);
|
||||
|
||||
@@ -87,39 +87,39 @@ public class ResourcePackRecorder {
|
||||
final File levelDir = new File(savesDir, levelName);
|
||||
|
||||
if (levelDir.isFile()) {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.ACCEPTED));
|
||||
Futures.addCallback(mc.getResourcePackRepository().setResourcePackInstance(levelDir), new FutureCallback<Object>() {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.ACCEPTED));
|
||||
Futures.addCallback(mc.getResourcePackRepository().setServerResourcePack(levelDir), new FutureCallback<Object>() {
|
||||
@Override
|
||||
public void onSuccess(Object result) {
|
||||
recordResourcePack(levelDir, requestId);
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@Nonnull Throwable throwable) {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||
}
|
||||
} else {
|
||||
final ServerData serverData = mc.getCurrentServerData();
|
||||
if (serverData != null && serverData.getResourceMode() == ServerData.ServerResourceMode.ENABLED) {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.ACCEPTED));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.ACCEPTED));
|
||||
downloadResourcePackFuture(requestId, url, hash);
|
||||
} else if (serverData != null && serverData.getResourceMode() != ServerData.ServerResourceMode.PROMPT) {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.DECLINED));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.DECLINED));
|
||||
} else {
|
||||
mc.addScheduledTask(() -> mc.displayGuiScreen(new GuiYesNo((result, id) -> {
|
||||
if (serverData != null) {
|
||||
serverData.setResourceMode(result ? ServerData.ServerResourceMode.ENABLED : ServerData.ServerResourceMode.DISABLED);
|
||||
}
|
||||
if (result) {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.ACCEPTED));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.ACCEPTED));
|
||||
downloadResourcePackFuture(requestId, url, hash);
|
||||
} else {
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.DECLINED));
|
||||
netManager.sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.DECLINED));
|
||||
}
|
||||
|
||||
ServerList.saveSingleServer(serverData);
|
||||
@@ -135,12 +135,12 @@ public class ResourcePackRecorder {
|
||||
Futures.addCallback(downloadResourcePack(requestId, url, hash), new FutureCallback() {
|
||||
@Override
|
||||
public void onSuccess(Object result) {
|
||||
mc.getConnection().sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
||||
mc.getConnection().sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.SUCCESSFULLY_LOADED));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@Nonnull Throwable throwable) {
|
||||
mc.getConnection().sendPacket(new CPacketResourcePackStatus(hash, CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||
mc.getConnection().sendPacket(new CPacketResourcePackStatus(CPacketResourcePackStatus.Action.FAILED_DOWNLOAD));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -174,7 +174,7 @@ public class ResourcePackRecorder {
|
||||
String fileHash = Hashing.sha1().hashBytes(Files.toByteArray(file)).toString();
|
||||
if (fileHash.equals(hash)) {
|
||||
recordResourcePack(file, requestId);
|
||||
return repo.setResourcePackInstance(file);
|
||||
return repo.setServerResourcePack(file);
|
||||
}
|
||||
|
||||
logger.warn("File " + file + " had wrong hash (expected " + hash + ", found " + fileHash + "). Deleting it.");
|
||||
@@ -190,13 +190,13 @@ public class ResourcePackRecorder {
|
||||
|
||||
Futures.getUnchecked(mc.addScheduledTask(() -> mc.displayGuiScreen(guiScreen)));
|
||||
|
||||
Map<String, String> sessionInfo = Minecraft.getSessionInfo();
|
||||
Map<String, String> sessionInfo = ResourcePackRepository.getDownloadHeaders();
|
||||
repo.downloadingPacks = HttpUtil.downloadResourcePack(file, url, sessionInfo, 50 * 1024 * 1024, guiScreen, mc.getProxy());
|
||||
Futures.addCallback(repo.downloadingPacks, new FutureCallback<Object>() {
|
||||
@Override
|
||||
public void onSuccess(Object value) {
|
||||
recordResourcePack(file, requestId);
|
||||
repo.setResourcePackInstance(file);
|
||||
repo.setServerResourcePack(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.particle.Particle;
|
||||
import net.minecraft.client.particle.ParticleManager;
|
||||
import net.minecraft.client.renderer.VertexBuffer;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@@ -12,19 +12,19 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(ParticleManager.class)
|
||||
public abstract class MixinParticleManager {
|
||||
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/VertexBuffer;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
private void renderNormalParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
|
||||
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
|
||||
renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
|
||||
}
|
||||
|
||||
@Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/VertexBuffer;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
private void renderLitParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
|
||||
@Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
private void renderLitParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
|
||||
renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
|
||||
}
|
||||
|
||||
private void renderParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
|
||||
private void renderParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) Minecraft.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
if (handler != null && handler.omnidirectional) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.replaymod.render.rendering;
|
||||
|
||||
import com.replaymod.core.utils.WrappedTimer;
|
||||
import com.replaymod.pathing.player.AbstractTimelinePlayer;
|
||||
import com.replaymod.pathing.player.ReplayTimer;
|
||||
import com.replaymod.pathing.properties.TimestampProperty;
|
||||
@@ -113,8 +114,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
|
||||
if (videoStart > 1000) {
|
||||
int replayTime = videoStart - 1000;
|
||||
timer.elapsedPartialTicks = timer.renderPartialTicks = 0;
|
||||
timer.timerSpeed = 1;
|
||||
timer.renderPartialTicks = 0;
|
||||
timer.tickLength = WrappedTimer.DEFAULT_MS_PER_TICK;
|
||||
while (replayTime < videoStart) {
|
||||
timer.elapsedTicks = 1;
|
||||
replayTime += 50;
|
||||
|
||||
@@ -151,7 +151,7 @@ public class InputReplayTimer extends WrappedTimer {
|
||||
// TODO: Translate magic values to Keyboard.KEY_ constants
|
||||
|
||||
if (key == 32 && Keyboard.isKeyDown(61) && mc.ingameGUI != null) {
|
||||
mc.ingameGUI.getChatGUI().clearChatMessages();
|
||||
mc.ingameGUI.getChatGUI().clearChatMessages(false);
|
||||
}
|
||||
|
||||
if (key == 31 && Keyboard.isKeyDown(61)) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.replaymod.replay;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.replaymod.core.utils.Restrictions;
|
||||
import com.replaymod.core.utils.WrappedTimer;
|
||||
import com.replaymod.replay.camera.CameraEntity;
|
||||
import com.replaymod.replay.camera.SpectatorCameraController;
|
||||
import com.replaymod.replay.events.ReplayCloseEvent;
|
||||
@@ -110,16 +111,16 @@ public class ReplayHandler {
|
||||
|
||||
channel.close().awaitUninterruptibly();
|
||||
|
||||
if (mc.thePlayer instanceof CameraEntity) {
|
||||
mc.thePlayer.setDead();
|
||||
if (mc.player instanceof CameraEntity) {
|
||||
mc.player.setDead();
|
||||
}
|
||||
|
||||
if (mc.theWorld != null) {
|
||||
mc.theWorld.sendQuittingDisconnectingPacket();
|
||||
if (mc.world != null) {
|
||||
mc.world.sendQuittingDisconnectingPacket();
|
||||
mc.loadWorld(null);
|
||||
}
|
||||
|
||||
mc.timer.timerSpeed = 1;
|
||||
mc.timer.tickLength = WrappedTimer.DEFAULT_MS_PER_TICK;
|
||||
overlay.setVisible(false);
|
||||
|
||||
ReplayModReplay.instance.replayHandler = null;
|
||||
@@ -130,7 +131,7 @@ public class ReplayHandler {
|
||||
}
|
||||
|
||||
private void setup() {
|
||||
mc.ingameGUI.getChatGUI().clearChatMessages();
|
||||
mc.ingameGUI.getChatGUI().clearChatMessages(true);
|
||||
|
||||
NetworkManager networkManager = new NetworkManager(EnumPacketDirection.CLIENTBOUND) {
|
||||
@Override
|
||||
@@ -143,13 +144,14 @@ public class ReplayHandler {
|
||||
networkManager.setNetHandler(netHandlerPlayClient);
|
||||
FMLClientHandler.instance().setPlayClient(netHandlerPlayClient);
|
||||
|
||||
channel = new EmbeddedChannel(networkManager);
|
||||
channel = new EmbeddedChannel();
|
||||
NetworkDispatcher networkDispatcher = new NetworkDispatcher(networkManager);
|
||||
channel.attr(NetworkDispatcher.FML_DISPATCHER).set(networkDispatcher);
|
||||
|
||||
channel.pipeline().addFirst("ReplayModReplay_replaySender", replaySender);
|
||||
channel.pipeline().addAfter("ReplayModReplay_replaySender", "fml:packet_handler", networkDispatcher);
|
||||
channel.pipeline().addLast("packet_handler", networkManager);
|
||||
channel.pipeline().fireChannelActive();
|
||||
networkDispatcher.clientToServerHandshake();
|
||||
}
|
||||
|
||||
public ReplayFile getReplayFile() {
|
||||
@@ -246,7 +248,7 @@ public class ReplayHandler {
|
||||
* @return {@code true} if the camera is the view entity, {@code false} otherwise
|
||||
*/
|
||||
public boolean isCameraView() {
|
||||
return mc.thePlayer instanceof CameraEntity && mc.thePlayer == mc.getRenderViewEntity();
|
||||
return mc.player instanceof CameraEntity && mc.player == mc.getRenderViewEntity();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -254,7 +256,7 @@ public class ReplayHandler {
|
||||
* @return The camera entity or {@code null} if it does not yet exist
|
||||
*/
|
||||
public CameraEntity getCameraEntity() {
|
||||
return mc.thePlayer instanceof CameraEntity ? (CameraEntity) mc.thePlayer : null;
|
||||
return mc.player instanceof CameraEntity ? (CameraEntity) mc.player : null;
|
||||
}
|
||||
|
||||
public UUID getSpectatedUUID() {
|
||||
@@ -301,7 +303,7 @@ public class ReplayHandler {
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
drawBackground(0);
|
||||
drawCenteredString(fontRendererObj, I18n.format("replaymod.gui.pleasewait"),
|
||||
drawCenteredString(fontRenderer, I18n.format("replaymod.gui.pleasewait"),
|
||||
width / 2, height / 2, 0xffffffff);
|
||||
}
|
||||
};
|
||||
@@ -334,7 +336,7 @@ public class ReplayHandler {
|
||||
replaySender.setReplaySpeed(0);
|
||||
|
||||
mc.getConnection().getNetworkManager().processReceivedPackets();
|
||||
for (Entity entity : mc.theWorld.loadedEntityList) {
|
||||
for (Entity entity : mc.world.loadedEntityList) {
|
||||
if (entity instanceof EntityOtherPlayerMP) {
|
||||
EntityOtherPlayerMP e = (EntityOtherPlayerMP) entity;
|
||||
e.setPosition(e.otherPlayerMPX, e.otherPlayerMPY, e.otherPlayerMPZ);
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.common.base.Preconditions;
|
||||
import com.google.common.io.Files;
|
||||
import com.replaymod.core.ReplayMod;
|
||||
import com.replaymod.core.utils.Restrictions;
|
||||
import com.replaymod.core.utils.WrappedTimer;
|
||||
import com.replaymod.replay.camera.CameraEntity;
|
||||
import com.replaymod.replaystudio.io.ReplayInputStream;
|
||||
import com.replaymod.replaystudio.io.ReplayOutputStream;
|
||||
@@ -29,8 +30,8 @@ import net.minecraft.util.ClassInheritanceMultiMap;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.world.EnumDifficulty;
|
||||
import net.minecraft.world.GameType;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldSettings.GameType;
|
||||
import net.minecraft.world.WorldType;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import net.minecraft.world.chunk.IChunkProvider;
|
||||
@@ -58,6 +59,9 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
*/
|
||||
private static final List<Class> BAD_PACKETS = Arrays.<Class>asList(
|
||||
// TODO Update possibly more?
|
||||
SPacketRecipeBook.class,
|
||||
SPacketAdvancementInfo.class,
|
||||
SPacketSelectAdvancementsTab.class,
|
||||
SPacketUpdateHealth.class,
|
||||
SPacketOpenWindow.class,
|
||||
SPacketCloseWindow.class,
|
||||
@@ -267,8 +271,8 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
// Entity#addedToChunk is not set and it is therefore not updated every tick.
|
||||
// To counteract this, we need to manually update it's position if it hasn't been added
|
||||
// to any chunk yet.
|
||||
if (mc.theWorld != null) {
|
||||
for (EntityPlayer playerEntity : mc.theWorld.playerEntities) {
|
||||
if (mc.world != null) {
|
||||
for (EntityPlayer playerEntity : mc.world.playerEntities) {
|
||||
if (!playerEntity.addedToChunk && playerEntity instanceof EntityOtherPlayerMP) {
|
||||
playerEntity.onLivingUpdate();
|
||||
}
|
||||
@@ -302,7 +306,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
// If we do not give minecraft time to tick, there will be dead entity artifacts left in the world
|
||||
// Therefore we have to remove all loaded, dead entities manually if we are in sync mode.
|
||||
// We do this after every SpawnX packet and after the destroy entities packet.
|
||||
if (!asyncMode && mc.theWorld != null) {
|
||||
if (!asyncMode && mc.world != null) {
|
||||
if (p instanceof SPacketSpawnPlayer
|
||||
|| p instanceof SPacketSpawnObject
|
||||
|| p instanceof SPacketSpawnMob
|
||||
@@ -310,7 +314,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
|| p instanceof SPacketSpawnPainting
|
||||
|| p instanceof SPacketSpawnExperienceOrb
|
||||
|| p instanceof SPacketDestroyEntities) {
|
||||
World world = mc.theWorld;
|
||||
World world = mc.world;
|
||||
for (int i = 0; i < world.loadedEntityList.size(); ++i) {
|
||||
Entity entity = world.loadedEntityList.get(i);
|
||||
if (entity.isDead) {
|
||||
@@ -341,7 +345,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
ByteBuf bb = Unpooled.wrappedBuffer(bytes);
|
||||
PacketBuffer pb = new PacketBuffer(bb);
|
||||
|
||||
int i = pb.readVarIntFromBuffer();
|
||||
int i = pb.readVarInt();
|
||||
|
||||
Packet p = EnumConnectionState.PLAY.getPacket(EnumPacketDirection.CLIENTBOUND, i);
|
||||
p.readPacketData(pb);
|
||||
@@ -413,7 +417,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
if (!file.exists()) {
|
||||
IOUtils.copy(replayFile.getResourcePack(hash).get(), new FileOutputStream(file));
|
||||
}
|
||||
mc.getResourcePackRepository().setResourcePackInstance(file);
|
||||
mc.getResourcePackRepository().setServerResourcePack(file);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -477,7 +481,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void run() {
|
||||
if (mc.theWorld == null || !mc.isCallingFromMinecraftThread()) {
|
||||
if (mc.world == null || !mc.isCallingFromMinecraftThread()) {
|
||||
ReplayMod.instance.runLater(this);
|
||||
return;
|
||||
}
|
||||
@@ -517,7 +521,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
@SuppressWarnings("unchecked")
|
||||
public void channelActive(ChannelHandlerContext ctx) throws Exception {
|
||||
this.ctx = ctx;
|
||||
ctx.attr(NetworkManager.PROTOCOL_ATTRIBUTE_KEY).set(EnumConnectionState.PLAY);
|
||||
ctx.channel().attr(NetworkManager.PROTOCOL_ATTRIBUTE_KEY).set(EnumConnectionState.PLAY);
|
||||
super.channelActive(ctx);
|
||||
}
|
||||
|
||||
@@ -545,7 +549,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
* @return {@code true} if it is paused, {@code false} otherwise
|
||||
*/
|
||||
public boolean paused() {
|
||||
return mc.timer.timerSpeed == 0;
|
||||
return mc.timer.tickLength == Float.POSITIVE_INFINITY;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -565,7 +569,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
*/
|
||||
public void setReplaySpeed(final double d) {
|
||||
if(d != 0) this.replaySpeed = d;
|
||||
mc.timer.timerSpeed = (float) d;
|
||||
mc.timer.tickLength = WrappedTimer.DEFAULT_MS_PER_TICK / (float) d;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
@@ -833,7 +837,7 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
// unloaded even though they shouldn't.
|
||||
// To make things worse, it seems like players were never supposed to be unloaded this way because
|
||||
// they will remain glitched in the World#playerEntities list.
|
||||
World world = mc.theWorld;
|
||||
World world = mc.world;
|
||||
IChunkProvider chunkProvider = world.getChunkProvider();
|
||||
// Get the chunk that will be unloaded
|
||||
Chunk chunk = chunkProvider.provideChunk(packet.getX(), packet.getZ());
|
||||
@@ -853,8 +857,8 @@ public class ReplaySender extends ChannelDuplexHandler {
|
||||
}
|
||||
|
||||
// Check whether the entity has left the chunk
|
||||
int chunkX = MathHelper.floor_double(entity.posX / 16);
|
||||
int chunkZ = MathHelper.floor_double(entity.posZ / 16);
|
||||
int chunkX = MathHelper.floor(entity.posX / 16);
|
||||
int chunkZ = MathHelper.floor(entity.posZ / 16);
|
||||
if (entity.chunkCoordX != chunkX || entity.chunkCoordZ != chunkZ) {
|
||||
// Entity has left the chunk
|
||||
chunk.removeEntityAtIndex(entity, entity.chunkCoordY);
|
||||
|
||||
@@ -20,6 +20,7 @@ import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.item.EntityItemFrame;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.stats.RecipeBook;
|
||||
import net.minecraft.stats.StatisticsManager;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@@ -41,7 +42,7 @@ import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* The camera entity used as the main player entity during replay viewing.
|
||||
* During a replay {@link Minecraft#thePlayer} should be an instance of this class.
|
||||
* During a replay {@link Minecraft#player} should be an instance of this class.
|
||||
* Camera movement is controlled by a separate {@link CameraController}.
|
||||
*/
|
||||
public class CameraEntity extends EntityPlayerSP {
|
||||
@@ -68,8 +69,8 @@ public class CameraEntity extends EntityPlayerSP {
|
||||
*/
|
||||
private final EventHandler eventHandler = new EventHandler();
|
||||
|
||||
public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager) {
|
||||
super(mcIn, worldIn, netHandlerPlayClient, statisticsManager);
|
||||
public CameraEntity(Minecraft mcIn, World worldIn, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) {
|
||||
super(mcIn, worldIn, netHandlerPlayClient, statisticsManager, recipeBook);
|
||||
MinecraftForge.EVENT_BUS.register(eventHandler);
|
||||
if (ReplayModReplay.instance.getReplayHandler().getSpectatedUUID() == null) {
|
||||
cameraController = ReplayModReplay.instance.createCameraController(this);
|
||||
@@ -158,14 +159,14 @@ public class CameraEntity extends EntityPlayerSP {
|
||||
// entity is recreated and we have to spectate a new entity
|
||||
UUID spectating = ReplayModReplay.instance.getReplayHandler().getSpectatedUUID();
|
||||
if (spectating != null && (view.getUniqueID() != spectating
|
||||
|| view.worldObj != worldObj)
|
||||
|| worldObj.getEntityByID(view.getEntityId()) != view) {
|
||||
|| view.world != world)
|
||||
|| world.getEntityByID(view.getEntityId()) != view) {
|
||||
if (spectating == null) {
|
||||
// Entity (non-player) died, stop spectating
|
||||
ReplayModReplay.instance.getReplayHandler().spectateEntity(this);
|
||||
return;
|
||||
}
|
||||
view = worldObj.getPlayerEntityByUUID(spectating);
|
||||
view = world.getPlayerEntityByUUID(spectating);
|
||||
if (view != null) {
|
||||
mc.setRenderViewEntity(view);
|
||||
} else {
|
||||
@@ -184,17 +185,17 @@ public class CameraEntity extends EntityPlayerSP {
|
||||
@Override
|
||||
public void preparePlayerToSpawn() {
|
||||
// Make sure our world is up-to-date in case of world changes
|
||||
if (mc.theWorld != null) {
|
||||
worldObj = mc.theWorld;
|
||||
if (mc.world != null) {
|
||||
world = mc.world;
|
||||
}
|
||||
super.preparePlayerToSpawn();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAngles(float yaw, float pitch) {
|
||||
public void setRotation(float yaw, float pitch) {
|
||||
if (mc.getRenderViewEntity() == this) {
|
||||
// Only update camera rotation when the camera is the view
|
||||
super.setAngles(yaw, pitch);
|
||||
super.setRotation(yaw, pitch);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,9 +393,9 @@ public class CameraEntity extends EntityPlayerSP {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChatMessage(ITextComponent message) {
|
||||
public void sendMessage(ITextComponent message) {
|
||||
if (MinecraftForge.EVENT_BUS.post(new ReplayChatMessageEvent(this))) return;
|
||||
super.addChatMessage(message);
|
||||
super.sendMessage(message);
|
||||
}
|
||||
|
||||
private class EventHandler {
|
||||
@@ -461,8 +462,8 @@ public class CameraEntity extends EntityPlayerSP {
|
||||
mc.entityRenderer.itemRenderer.itemStackOffHand = player.getItemStackFromSlot(EntityEquipmentSlot.OFFHAND);
|
||||
|
||||
|
||||
mc.thePlayer.renderArmYaw = mc.thePlayer.prevRenderArmYaw = player.rotationYaw;
|
||||
mc.thePlayer.renderArmPitch = mc.thePlayer.prevRenderArmPitch = player.rotationPitch;
|
||||
mc.player.renderArmYaw = mc.player.prevRenderArmYaw = player.rotationYaw;
|
||||
mc.player.renderArmPitch = mc.player.prevRenderArmPitch = player.rotationPitch;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ public class ClassicCameraController implements CameraController {
|
||||
Vec3d movement = direction.normalize();
|
||||
double factor = motion * (frac / 1000D);
|
||||
|
||||
camera.moveCamera(movement.xCoord * factor, movement.yCoord * factor, movement.zCoord * factor);
|
||||
camera.moveCamera(movement.x * factor, movement.y * factor, movement.z * factor);
|
||||
}
|
||||
|
||||
private void setMovement(MoveDirection dir) {
|
||||
|
||||
@@ -58,7 +58,7 @@ public class GuiMarkerTimeline extends AbstractGuiTimeline<GuiMarkerTimeline> im
|
||||
|
||||
protected void drawMarker(GuiRenderer renderer, ReadableDimension size, Marker marker) {
|
||||
int visibleLength = (int) (getLength() * getZoom());
|
||||
int markerPos = MathHelper.clamp_int(marker.getTime(), getOffset(), getOffset() + visibleLength);
|
||||
int markerPos = MathHelper.clamp(marker.getTime(), getOffset(), getOffset() + visibleLength);
|
||||
double positionInVisible = markerPos - getOffset();
|
||||
double fractionOfVisible = positionInVisible / visibleLength;
|
||||
int markerX = (int) (BORDER_LEFT + fractionOfVisible * (size.getWidth() - BORDER_LEFT - BORDER_RIGHT));
|
||||
@@ -99,7 +99,7 @@ public class GuiMarkerTimeline extends AbstractGuiTimeline<GuiMarkerTimeline> im
|
||||
int visibleLength = (int) (getLength() * getZoom());
|
||||
int contentWidth = lastSize.getWidth() - BORDER_LEFT - BORDER_RIGHT;
|
||||
for (Marker marker : replayHandler.getMarkers()) {
|
||||
int markerPos = MathHelper.clamp_int(marker.getTime(), getOffset(), getOffset() + visibleLength);
|
||||
int markerPos = MathHelper.clamp(marker.getTime(), getOffset(), getOffset() + visibleLength);
|
||||
double positionInVisible = markerPos - getOffset();
|
||||
double fractionOfVisible = positionInVisible / visibleLength;
|
||||
int markerX = (int) (BORDER_LEFT + fractionOfVisible * contentWidth);
|
||||
|
||||
@@ -36,7 +36,7 @@ import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.IOCase;
|
||||
import org.apache.commons.io.filefilter.SuffixFileFilter;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.core.helpers.Strings;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.lwjgl.Sys;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.util.Dimension;
|
||||
|
||||
@@ -19,7 +19,7 @@ import static com.replaymod.replay.ReplayModReplay.LOGGER;
|
||||
|
||||
public class GuiHandler {
|
||||
private static final int BUTTON_EXIT_SERVER = 1;
|
||||
private static final int BUTTON_ACHIEVEMENTS = 5;
|
||||
private static final int BUTTON_ADVANCEMENTS = 5;
|
||||
private static final int BUTTON_STATS = 6;
|
||||
private static final int BUTTON_OPEN_TO_LAN = 7;
|
||||
|
||||
@@ -57,8 +57,8 @@ public class GuiHandler {
|
||||
b.displayString = I18n.format("replaymod.gui.exit");
|
||||
b.id = BUTTON_EXIT_REPLAY;
|
||||
break;
|
||||
// Remove "Achievements", "Stats" and "Open to LAN" buttons
|
||||
case BUTTON_ACHIEVEMENTS:
|
||||
// Remove "Advancements", "Stats" and "Open to LAN" buttons
|
||||
case BUTTON_ADVANCEMENTS:
|
||||
buttonList.remove(achievements = b);
|
||||
break;
|
||||
case BUTTON_STATS:
|
||||
@@ -70,12 +70,12 @@ public class GuiHandler {
|
||||
}
|
||||
}
|
||||
if (achievements != null && stats != null) {
|
||||
moveAllButtonsDirectlyBelowUpwards(buttonList, achievements.yPosition,
|
||||
achievements.xPosition, stats.xPosition + stats.width);
|
||||
moveAllButtonsDirectlyBelowUpwards(buttonList, achievements.y,
|
||||
achievements.x, stats.x + stats.width);
|
||||
}
|
||||
if (openToLan != null) {
|
||||
moveAllButtonsDirectlyBelowUpwards(buttonList, openToLan.yPosition,
|
||||
openToLan.xPosition, openToLan.xPosition + openToLan.width);
|
||||
moveAllButtonsDirectlyBelowUpwards(buttonList, openToLan.y,
|
||||
openToLan.x, openToLan.x + openToLan.width);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -89,8 +89,8 @@ public class GuiHandler {
|
||||
*/
|
||||
private void moveAllButtonsDirectlyBelowUpwards(List<GuiButton> buttons, int belowY, int xStart, int xEnd) {
|
||||
for (GuiButton button : buttons) {
|
||||
if (button.yPosition >= belowY && button.xPosition <= xEnd && button.xPosition + button.width >= xStart) {
|
||||
button.yPosition -= 24;
|
||||
if (button.y >= belowY && button.x <= xEnd && button.x + button.width >= xStart) {
|
||||
button.y -= 24;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public abstract class MixinGuiSpectator {
|
||||
@Inject(method = "onHotbarSelected", at = @At("HEAD"), cancellable = true)
|
||||
public void isInReplay(int i, CallbackInfo ci) {
|
||||
// Prevent spectator gui from opening while in a replay
|
||||
if (mc.thePlayer instanceof CameraEntity) {
|
||||
if (mc.player instanceof CameraEntity) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
import net.minecraft.client.multiplayer.PlayerControllerMP;
|
||||
import net.minecraft.client.network.NetHandlerPlayClient;
|
||||
import net.minecraft.stats.RecipeBook;
|
||||
import net.minecraft.stats.StatisticsManager;
|
||||
import net.minecraft.world.World;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
@@ -23,18 +24,18 @@ public abstract class MixinPlayerControllerMP {
|
||||
@Shadow
|
||||
private NetHandlerPlayClient connection;
|
||||
|
||||
@Inject(method = "createClientPlayer", at=@At("HEAD"), cancellable = true)
|
||||
private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, CallbackInfoReturnable<EntityPlayerSP> ci) {
|
||||
@Inject(method = "func_192830_a", at=@At("HEAD"), cancellable = true)
|
||||
private void replayModReplay_createReplayCamera(World worldIn, StatisticsManager statisticsManager, RecipeBook recipeBook, CallbackInfoReturnable<EntityPlayerSP> ci) {
|
||||
if (ReplayModReplay.instance.getReplayHandler() != null) {
|
||||
ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager));
|
||||
ci.setReturnValue(new CameraEntity(mc, worldIn, connection, statisticsManager, recipeBook));
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "isSpectator", at=@At("HEAD"), cancellable = true)
|
||||
private void replayModReplay_isSpectator(CallbackInfoReturnable<Boolean> ci) {
|
||||
if (mc.thePlayer instanceof CameraEntity) { // this check should in theory not be required
|
||||
ci.setReturnValue(mc.thePlayer.isSpectator());
|
||||
if (mc.player instanceof CameraEntity) { // this check should in theory not be required
|
||||
ci.setReturnValue(mc.player.isSpectator());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
public abstract class MixinRenderLivingBase {
|
||||
@Inject(method = "canRenderName", at = @At("HEAD"), cancellable = true)
|
||||
private void replayModReplay_canRenderInvisibleName(EntityLivingBase entity, CallbackInfoReturnable<Boolean> ci) {
|
||||
EntityPlayer thePlayer = Minecraft.getMinecraft().thePlayer;
|
||||
EntityPlayer thePlayer = Minecraft.getMinecraft().player;
|
||||
if (thePlayer instanceof CameraEntity && entity.isInvisible()) {
|
||||
ci.setReturnValue(false);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public abstract class MixinViewFrustum {
|
||||
}
|
||||
|
||||
/**
|
||||
* Instead of calling {@link RenderChunk#setOrigin(int, int, int)} we recreate the render chunk
|
||||
* Instead of calling {@link RenderChunk#setPosition(int, int, int)} we recreate the render chunk
|
||||
* which seems to solve the problem that chunks are invisible when you leave an area and return
|
||||
* to it.
|
||||
* Any better fixes are welcome.
|
||||
@@ -43,8 +43,8 @@ public abstract class MixinViewFrustum {
|
||||
return;
|
||||
}
|
||||
|
||||
int i = MathHelper.floor_double(viewEntityX) - 8;
|
||||
int j = MathHelper.floor_double(viewEntityZ) - 8;
|
||||
int i = MathHelper.floor(viewEntityX) - 8;
|
||||
int j = MathHelper.floor(viewEntityZ) - 8;
|
||||
int k = this.countChunksX * 16;
|
||||
|
||||
for (int l = 0; l < this.countChunksX; ++l) {
|
||||
@@ -59,7 +59,7 @@ public abstract class MixinViewFrustum {
|
||||
// Recreate render chunk instead of setting its position
|
||||
(renderChunks[(j1 * this.countChunksY + l1) * this.countChunksX + l] =
|
||||
renderChunkFactory.create(world, renderGlobal, 0)
|
||||
).setOrigin(blockpos.getX(), blockpos.getY(), blockpos.getZ());
|
||||
).setPosition(blockpos.getX(), blockpos.getY(), blockpos.getZ());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -658,7 +658,7 @@ public class SPTimeline implements PathingRegistry {
|
||||
} catch (IOException e) {
|
||||
CrashReport crash = CrashReport.makeCrashReport(e, "Serializing interpolator");
|
||||
CrashReportCategory category = crash.makeCategory("Serializing interpolator");
|
||||
category.setDetail("Interpolator", interpolator::toString);
|
||||
category.addDetail("Interpolator", interpolator::toString);
|
||||
throw new ReportedException(crash);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,9 +15,9 @@ import com.replaymod.simplepathing.ReplayModSimplePathing;
|
||||
import com.replaymod.simplepathing.SPTimeline;
|
||||
import com.replaymod.simplepathing.gui.GuiPathing;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.VertexBuffer;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@@ -204,7 +204,7 @@ public class PathPreviewRenderer {
|
||||
if (distanceSquared(view, pos2) > renderDistanceSquared) return;
|
||||
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
VertexBuffer vertexBuffer = tessellator.getBuffer();
|
||||
BufferBuilder vertexBuffer = tessellator.getBuffer();
|
||||
vertexBuffer.setTranslation(-view.getLeft(), -view.getMiddle(), -view.getRight());
|
||||
|
||||
vertexBuffer.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);
|
||||
@@ -231,7 +231,7 @@ public class PathPreviewRenderer {
|
||||
Triple<Double, Double, Double> pos,
|
||||
Keyframe keyframe) {
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
VertexBuffer vertexBuffer = tessellator.getBuffer();
|
||||
BufferBuilder vertexBuffer = tessellator.getBuffer();
|
||||
vertexBuffer.setTranslation(0, 0, 0);
|
||||
|
||||
mc.renderEngine.bindTexture(TEXTURE);
|
||||
@@ -280,7 +280,7 @@ public class PathPreviewRenderer {
|
||||
Triple<Double, Double, Double> pos,
|
||||
Triple<Float, Float, Float> rot) {
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
VertexBuffer vertexBuffer = tessellator.getBuffer();
|
||||
BufferBuilder vertexBuffer = tessellator.getBuffer();
|
||||
vertexBuffer.setTranslation(0, 0, 0);
|
||||
|
||||
mc.renderEngine.bindTexture(CAMERA_HEAD);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# To apply changes in this file run: ./gradlew clean setupDecompWorkspace idea
|
||||
|
||||
# Minecraft
|
||||
public net.minecraft.client.Minecraft field_71428_T # timer
|
||||
public-f net.minecraft.client.Minecraft field_71428_T # timer
|
||||
public net.minecraft.client.Minecraft field_83002_am # debugCrashKeyPressTime
|
||||
public net.minecraft.client.Minecraft field_71467_ac # rightClickDelayTimer
|
||||
public net.minecraft.client.Minecraft field_71423_H # systemTime
|
||||
@@ -42,6 +42,10 @@ public net.minecraft.network.play.server.SPacketSpawnPlayer field_148960_i # wat
|
||||
# GuiTextField
|
||||
public net.minecraft.client.gui.GuiTextField field_146216_j # text
|
||||
|
||||
# GuiMainMenu
|
||||
public net.minecraft.client.gui.GuiMainMenu field_175372_K # realmsButton
|
||||
public net.minecraft.client.gui.GuiMainMenu field_183503_M # realmsNotification
|
||||
|
||||
# Entity
|
||||
public net.minecraft.entity.Entity field_70180_af # dataWatcher
|
||||
|
||||
@@ -95,10 +99,10 @@ public net.minecraft.client.entity.EntityOtherPlayerMP *
|
||||
public net.minecraft.server.integrated.IntegratedServer field_71348_o # isGamePaused
|
||||
|
||||
# GameSettings
|
||||
public net.minecraft.client.settings.GameSettings field_186714_aM # soundLevels
|
||||
public-f net.minecraft.client.settings.GameSettings field_186714_aM # soundLevels
|
||||
|
||||
# Frustum
|
||||
public net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper
|
||||
public-f net.minecraft.client.renderer.culling.Frustum field_78552_a # clippingHelper
|
||||
|
||||
# CrashReportCategory
|
||||
public net.minecraft.crash.CrashReportCategory field_85077_c # children
|
||||
|
||||
Reference in New Issue
Block a user