Commit 44a45235b08f1558277c3b1ca6c3e621bf6a9906

Authored by Mumfrey
1 parent 9eca984c

Initial work to switch implemention to mixins

Showing 65 changed files with 2108 additions and 924 deletions
.gitignore
@@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
2 ######### 2 #########
3 MANIFEST.MF 3 MANIFEST.MF
4 dependency-reduced-pom.xml 4 dependency-reduced-pom.xml
5 -.checkstyle  
6 5
7 # Compiled # 6 # Compiled #
8 ############ 7 ############
@@ -19,7 +18,6 @@ target @@ -19,7 +18,6 @@ target
19 *.exe 18 *.exe
20 *.o 19 *.o
21 *.so 20 *.so
22 -*.launch  
23 21
24 # Databases # 22 # Databases #
25 ############# 23 #############
@@ -55,9 +53,12 @@ target @@ -55,9 +53,12 @@ target
55 .DS_Store 53 .DS_Store
56 ehthumbs.db 54 ehthumbs.db
57 Thumbs.db 55 Thumbs.db
  56 +*.bat
  57 +*.sh
58 58
59 # Project # 59 # Project #
60 ########### 60 ###########
  61 +.checkstyle
61 .classpath 62 .classpath
62 .externalToolBuilders 63 .externalToolBuilders
63 .gradle 64 .gradle
@@ -73,4 +74,5 @@ nb-configuration.xml @@ -73,4 +74,5 @@ nb-configuration.xml
73 *.iml 74 *.iml
74 *.ipr 75 *.ipr
75 *.iws 76 *.iws
  77 +*.launch
76 78
build.gradle
@@ -15,6 +15,7 @@ buildscript { @@ -15,6 +15,7 @@ buildscript {
15 dependencies { 15 dependencies {
16 classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT' 16 classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT'
17 classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.0' 17 classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.0'
  18 + classpath 'org.spongepowered:mixingradle:0.1-SNAPSHOT'
18 } 19 }
19 } 20 }
20 21
@@ -22,10 +23,15 @@ apply plugin: 'net.minecraftforge.gradle.tweaker-client' @@ -22,10 +23,15 @@ apply plugin: 'net.minecraftforge.gradle.tweaker-client'
22 apply plugin: 'checkstyle' 23 apply plugin: 'checkstyle'
23 apply plugin: 'maven' 24 apply plugin: 'maven'
24 apply plugin: 'com.github.johnrengelman.shadow' 25 apply plugin: 'com.github.johnrengelman.shadow'
  26 +apply plugin: 'org.spongepowered.mixin'
  27 +
  28 +// Default tasks
  29 +defaultTasks 'build'
25 30
26 ext { 31 ext {
27 // Artefact details 32 // Artefact details
28 buildNumber = project.hasProperty("buildNumber") ? buildNumber : '0' 33 buildNumber = project.hasProperty("buildNumber") ? buildNumber : '0'
  34 + buildVersion = project.hasProperty("buildVersion") ? buildVersion : '0.0'
29 ciSystem = project.hasProperty("ciSystem") ? ciSystem : 'unknown' 35 ciSystem = project.hasProperty("ciSystem") ? ciSystem : 'unknown'
30 commit = project.hasProperty("commit") ? commit : 'unknown' 36 commit = project.hasProperty("commit") ? commit : 'unknown'
31 classifier = project.hasProperty("buildType") ? buildType : 'SNAPSHOT' 37 classifier = project.hasProperty("buildType") ? buildType : 'SNAPSHOT'
@@ -39,9 +45,6 @@ ext { @@ -39,9 +45,6 @@ ext {
39 45
40 startClass = 'com.mumfrey.liteloader.debug.Start' 46 startClass = 'com.mumfrey.liteloader.debug.Start'
41 tweakClass = 'com.mumfrey.liteloader.launch.LiteLoaderTweaker' 47 tweakClass = 'com.mumfrey.liteloader.launch.LiteLoaderTweaker'
42 -  
43 - mixinSrg = new File(project.buildDir, 'tmp/mixins.liteloader/mixins.srg')  
44 - mixinRefMap = new File(project.buildDir, "tmp/mixins.liteloader/mixins.liteloader.refmap.json")  
45 } 48 }
46 49
47 // Basic project information 50 // Basic project information
@@ -61,7 +64,7 @@ repositories { @@ -61,7 +64,7 @@ repositories {
61 } 64 }
62 65
63 dependencies { 66 dependencies {
64 - compile('org.spongepowered:mixin:0.4.7-SNAPSHOT') { 67 + compile('org.spongepowered:mixin:0.4.10-SNAPSHOT') {
65 exclude module: 'launchwrapper' 68 exclude module: 'launchwrapper'
66 exclude module: 'guava' 69 exclude module: 'guava'
67 } 70 }
@@ -75,20 +78,28 @@ minecraft { @@ -75,20 +78,28 @@ minecraft {
75 } 78 }
76 79
77 sourceSets { 80 sourceSets {
  81 + main {
  82 + refMap = "mixins.liteloader.core.refmap.json"
  83 + }
78 client { 84 client {
79 compileClasspath += main.compileClasspath + main.output 85 compileClasspath += main.compileClasspath + main.output
  86 + refMap = "mixins.liteloader.client.refmap.json"
80 } 87 }
81 debug { 88 debug {
82 compileClasspath += client.compileClasspath + client.output 89 compileClasspath += client.compileClasspath + client.output
83 } 90 }
84 } 91 }
85 92
  93 +mixin {
  94 + defaultObfuscationEnv notch
  95 +}
  96 +
86 checkstyle { 97 checkstyle {
87 configProperties = [ 98 configProperties = [
88 - "name" : project.name,  
89 - "organization": project.organization,  
90 - "url" : project.url,  
91 - "year" : project.inceptionYear 99 + "name" : project.name,
  100 + "organization": project.organization,
  101 + "url" : project.url,
  102 + "year" : project.inceptionYear
92 ] 103 ]
93 configFile = file("checkstyle.xml") 104 configFile = file("checkstyle.xml")
94 toolVersion = '6.13' 105 toolVersion = '6.13'
@@ -99,8 +110,19 @@ javadoc { @@ -99,8 +110,19 @@ javadoc {
99 source sourceSets.debug.allJava 110 source sourceSets.debug.allJava
100 } 111 }
101 112
102 -// hacks for run configs  
103 afterEvaluate { 113 afterEvaluate {
  114 + logger.lifecycle '================================================='
  115 + logger.lifecycle ' LiteLoader'
  116 + logger.lifecycle ' Copyright (C) 2011-2015 Adam Mummery-Smith'
  117 + logger.lifecycle ' Running in {} mode', (project.isReleaseBuild ? "RELEASE" : "SNAPSHOT")
  118 + logger.lifecycle '================================================='
  119 +
  120 + makeEclipseCleanRunClient {
  121 + arguments = ""
  122 + jvmArguments = "-Dliteloader.debug=true -Dmixin.debug.verbose=true -Dmixin.debug.verify=true"
  123 + }
  124 +
  125 + // hacks for run configs
104 def mc = plugins.getPlugin 'net.minecraftforge.gradle.tweaker-client' 126 def mc = plugins.getPlugin 'net.minecraftforge.gradle.tweaker-client'
105 mc.replacer.putReplacement '{RUN_CLIENT_MAIN}', project.startClass 127 mc.replacer.putReplacement '{RUN_CLIENT_MAIN}', project.startClass
106 mc.replacer.putReplacement '{RUN_CLIENT_TWEAKER}', minecraft.tweakClass 128 mc.replacer.putReplacement '{RUN_CLIENT_TWEAKER}', minecraft.tweakClass
@@ -118,6 +140,14 @@ def jarManifest = { @@ -118,6 +140,14 @@ def jarManifest = {
118 } 140 }
119 141
120 jar { 142 jar {
  143 + doFirst {
  144 + // Seriously forge?
  145 + ant.replace(
  146 + file: sourceSets.main.refMapFile,
  147 + token: "func_72355_a(Lnet/minecraft/network/NetworkManager;Lnet/minecraft/entity/player/EntityPlayerMP;)V",
  148 + value: "initializeConnectionToPlayer(Lnet/minecraft/network/NetworkManager;Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/network/NetHandlerPlayServer;)V"
  149 + )
  150 + }
121 from sourceSets.client.output 151 from sourceSets.client.output
122 from sourceSets.debug.output 152 from sourceSets.debug.output
123 manifest jarManifest 153 manifest jarManifest
@@ -126,7 +156,6 @@ jar { @@ -126,7 +156,6 @@ jar {
126 task releaseJar(type: Jar) { 156 task releaseJar(type: Jar) {
127 from sourceSets.main.output 157 from sourceSets.main.output
128 from sourceSets.client.output 158 from sourceSets.client.output
129 - from project.mixinRefMap  
130 159
131 manifest jarManifest 160 manifest jarManifest
132 classifier = 'staging' 161 classifier = 'staging'
@@ -138,7 +167,6 @@ shadowJar { @@ -138,7 +167,6 @@ shadowJar {
138 167
139 from sourceSets.main.output 168 from sourceSets.main.output
140 from sourceSets.client.output 169 from sourceSets.client.output
141 - from project.mixinRefMap  
142 170
143 exclude 'META-INF/*.DSA' 171 exclude 'META-INF/*.DSA'
144 exclude 'META-INF/*.RSA' 172 exclude 'META-INF/*.RSA'
@@ -170,10 +198,7 @@ tasks.withType(JavaCompile) { @@ -170,10 +198,7 @@ tasks.withType(JavaCompile) {
170 '-Xlint:all', 198 '-Xlint:all',
171 '-Xlint:-path', 199 '-Xlint:-path',
172 '-Xlint:-rawtypes', 200 '-Xlint:-rawtypes',
173 - '-Xlint:-processing',  
174 - "-AoutSrgFile=${project.mixinSrg.canonicalPath}",  
175 - "-AoutRefMapFile=${project.mixinRefMap.canonicalPath}",  
176 - "-AreobfSrgFile=${genSrgs.mcpToNotch.canonicalPath}" 201 + '-Xlint:-processing'
177 ] 202 ]
178 options.deprecation = true 203 options.deprecation = true
179 options.encoding = 'utf8' 204 options.encoding = 'utf8'
@@ -188,35 +213,22 @@ if (JavaVersion.current().isJava8Compatible()) { @@ -188,35 +213,22 @@ if (JavaVersion.current().isJava8Compatible()) {
188 213
189 reobf { 214 reobf {
190 jar { 215 jar {
191 - useSrgSrg() 216 + mappingType = 'SEARGE'
192 } 217 }
193 releaseJar { 218 releaseJar {
194 - useNotchSrg() 219 + mappingType = 'NOTCH'
195 classpath = sourceSets.main.compileClasspath 220 classpath = sourceSets.main.compileClasspath
196 - extraFiles([  
197 - project.mixinSrg  
198 - ])  
199 } 221 }
200 shadowJar { 222 shadowJar {
201 - useNotchSrg() 223 + mappingType = 'NOTCH'
202 classpath = sourceSets.main.compileClasspath 224 classpath = sourceSets.main.compileClasspath
203 - extraFiles([  
204 - project.mixinSrg  
205 - ])  
206 } 225 }
207 } 226 }
208 227
209 -compileJava.doFirst {  
210 - println '------------------------------------------------------------'  
211 - println 'Running ' + (project.isReleaseBuild ? "RELEASE" : "SNAPSHOT") + ' build'  
212 - println '------------------------------------------------------------'  
213 -}  
214 -  
215 build.dependsOn {[ 228 build.dependsOn {[
216 'reobfReleaseJar', 229 'reobfReleaseJar',
217 'reobfShadowJar' 230 'reobfShadowJar'
218 - ]  
219 -} 231 +]}
220 232
221 artifacts { 233 artifacts {
222 if (project.isReleaseBuild) { 234 if (project.isReleaseBuild) {
extra/formatter.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<profiles version="12">
  3 +<profile kind="CodeFormatterProfile" name="LiteLoader" version="12">
  4 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
  5 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
  6 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
  7 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
  8 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
  9 +<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
  10 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
  11 +<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
  12 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
  13 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
  14 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
  15 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
  16 +<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
  17 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
  18 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
  19 +<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false"/>
  20 +<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
  21 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
  22 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
  23 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
  24 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
  25 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
  26 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
  27 +<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
  28 +<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
  29 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
  30 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
  31 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
  32 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
  33 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
  34 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
  35 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
  36 +<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
  37 +<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
  38 +<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
  39 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
  40 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
  41 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
  42 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
  43 +<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
  44 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
  45 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
  46 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
  47 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
  48 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
  49 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
  50 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
  51 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
  52 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
  53 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
  54 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
  55 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
  56 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
  57 +<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="true"/>
  58 +<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
  59 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
  60 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
  61 +<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
  62 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
  63 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
  64 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
  65 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
  66 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
  67 +<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
  68 +<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/>
  69 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
  70 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
  71 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
  72 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
  73 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
  74 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
  75 +<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/>
  76 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
  77 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
  78 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
  79 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
  80 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
  81 +<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
  82 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
  83 +<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
  84 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
  85 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
  86 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
  87 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
  88 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
  89 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
  90 +<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
  91 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
  92 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
  93 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
  94 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
  95 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
  96 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/>
  97 +<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
  98 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
  99 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
  100 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
  101 +<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
  102 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
  103 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
  104 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
  105 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
  106 +<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
  107 +<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
  108 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
  109 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
  110 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
  111 +<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
  112 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
  113 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
  114 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
  115 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
  116 +<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
  117 +<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
  118 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
  119 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
  120 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
  121 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
  122 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
  123 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
  124 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
  125 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
  126 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
  127 +<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
  128 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
  129 +<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
  130 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
  131 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
  132 +<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
  133 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
  134 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
  135 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
  136 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
  137 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
  138 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
  139 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
  140 +<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
  141 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
  142 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
  143 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
  144 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
  145 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
  146 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
  147 +<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
  148 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
  149 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
  150 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
  151 +<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
  152 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
  153 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
  154 +<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
  155 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
  156 +<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
  157 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
  158 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
  159 +<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
  160 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
  161 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
  162 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
  163 +<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="true"/>
  164 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
  165 +<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
  166 +<setting id="org.eclipse.jdt.core.compiler.source" value="1.8"/>
  167 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
  168 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
  169 +<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
  170 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
  171 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
  172 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
  173 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
  174 +<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
  175 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
  176 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
  177 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
  178 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
  179 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
  180 +<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
  181 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
  182 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
  183 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
  184 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
  185 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
  186 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
  187 +<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.8"/>
  188 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
  189 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
  190 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
  191 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
  192 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
  193 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
  194 +<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
  195 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
  196 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
  197 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
  198 +<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="true"/>
  199 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
  200 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
  201 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
  202 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="16"/>
  203 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
  204 +<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
  205 +<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
  206 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
  207 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
  208 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
  209 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
  210 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
  211 +<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
  212 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
  213 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
  214 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
  215 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
  216 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
  217 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
  218 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
  219 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
  220 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
  221 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
  222 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
  223 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
  224 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
  225 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
  226 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
  227 +<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
  228 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
  229 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
  230 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
  231 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
  232 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
  233 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
  234 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
  235 +<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
  236 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
  237 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
  238 +<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="true"/>
  239 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
  240 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="0"/>
  241 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
  242 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
  243 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
  244 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
  245 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
  246 +<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
  247 +<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
  248 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
  249 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
  250 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
  251 +<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
  252 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
  253 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
  254 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
  255 +<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.8"/>
  256 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
  257 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
  258 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
  259 +<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
  260 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
  261 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
  262 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
  263 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
  264 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
  265 +<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
  266 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="do not insert"/>
  267 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
  268 +<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
  269 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
  270 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
  271 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
  272 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
  273 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
  274 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
  275 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
  276 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
  277 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
  278 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
  279 +<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
  280 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
  281 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
  282 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
  283 +<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
  284 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
  285 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
  286 +<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
  287 +<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
  288 +<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
  289 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
  290 +<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
  291 +<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="150"/>
  292 +<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
  293 +<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
  294 +</profile>
  295 +</profiles>
extra/liteloader.importorder 0 → 100644
  1 +#Organize Import Order
  2 +#Wed Dec 02 11:57:04 GMT 2015
  3 +4=com
  4 +3=org
  5 +2=javax
  6 +1=java
  7 +0=\#
src/client/java/com/mumfrey/liteloader/client/CallbackProxyClient.java deleted 100644 → 0
1 -package com.mumfrey.liteloader.client;  
2 -  
3 -import java.io.File;  
4 -import java.util.UUID;  
5 -  
6 -import net.minecraft.client.Minecraft;  
7 -import net.minecraft.client.entity.EntityPlayerSP;  
8 -import net.minecraft.client.gui.GuiIngame;  
9 -import net.minecraft.client.renderer.EntityRenderer;  
10 -import net.minecraft.client.renderer.OpenGlHelper;  
11 -import net.minecraft.client.renderer.RenderGlobal;  
12 -import net.minecraft.client.renderer.entity.Render;  
13 -import net.minecraft.client.renderer.entity.RenderManager;  
14 -import net.minecraft.client.shader.Framebuffer;  
15 -import net.minecraft.entity.Entity;  
16 -import net.minecraft.entity.player.EntityPlayer;  
17 -import net.minecraft.server.integrated.IntegratedServer;  
18 -import net.minecraft.util.IChatComponent;  
19 -import net.minecraft.util.ScreenShotHelper;  
20 -import net.minecraft.util.Session;  
21 -import net.minecraft.world.WorldSettings;  
22 -  
23 -import com.mojang.authlib.GameProfile;  
24 -import com.mumfrey.liteloader.core.CallbackProxyCommon;  
25 -import com.mumfrey.liteloader.transformers.event.EventInfo;  
26 -import com.mumfrey.liteloader.transformers.event.ReturnEventInfo;  
27 -  
28 -/**  
29 - * Proxy class which handles the redirected calls from the injected callbacks  
30 - * and routes them to the relevant liteloader handler classes. We do this rather  
31 - * than patching a bunch of bytecode into the packet classes themselves because  
32 - * this is easier to maintain.  
33 - *  
34 - * @author Adam Mummery-Smith  
35 - */  
36 -public abstract class CallbackProxyClient extends CallbackProxyCommon  
37 -{  
38 - private static LiteLoaderEventBrokerClient clientEventBroker;  
39 -  
40 - private static boolean fboEnabled;  
41 -  
42 - private static boolean renderingFBO;  
43 -  
44 - private CallbackProxyClient() {}  
45 -  
46 - public static void onStartupComplete(EventInfo<Minecraft> e)  
47 - {  
48 - CallbackProxyCommon.onStartupComplete();  
49 -  
50 - CallbackProxyClient.clientEventBroker = LiteLoaderEventBrokerClient.getInstance();  
51 -  
52 - if (CallbackProxyClient.clientEventBroker == null)  
53 - {  
54 - throw new RuntimeException("LiteLoader failed to start up properly."  
55 - + " The game is in an unstable state and must shut down now. Check the developer log for startup errors");  
56 - }  
57 -  
58 - CallbackProxyClient.clientEventBroker.onStartupComplete();  
59 - }  
60 -  
61 - public static void onTimerUpdate(EventInfo<Minecraft> e)  
62 - {  
63 - CallbackProxyClient.clientEventBroker.onTimerUpdate();  
64 - }  
65 -  
66 - public static void newTick(EventInfo<Minecraft> e)  
67 - {  
68 - }  
69 -  
70 - public static void onTick(EventInfo<Minecraft> e)  
71 - {  
72 - CallbackProxyClient.clientEventBroker.onTick();  
73 - }  
74 -  
75 - public static void onRender(EventInfo<Minecraft> e)  
76 - {  
77 - CallbackProxyClient.clientEventBroker.onRender();  
78 - }  
79 -  
80 - public static void preRenderGUI(EventInfo<EntityRenderer> e, float partialTicks)  
81 - {  
82 - CallbackProxyClient.clientEventBroker.preRenderGUI(partialTicks);  
83 - }  
84 -  
85 - public static void onSetupCameraTransform(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)  
86 - {  
87 - CallbackProxyClient.clientEventBroker.onSetupCameraTransform(pass, partialTicks, timeSlice);  
88 - }  
89 -  
90 - public static void postRenderEntities(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)  
91 - {  
92 - CallbackProxyClient.clientEventBroker.postRenderEntities(partialTicks, timeSlice);  
93 - }  
94 -  
95 - public static void postRender(EventInfo<EntityRenderer> e, float partialTicks, long timeSlice)  
96 - {  
97 - CallbackProxyClient.clientEventBroker.postRender(partialTicks, timeSlice);  
98 - }  
99 -  
100 - public static void onRenderHUD(EventInfo<EntityRenderer> e, float partialTicks)  
101 - {  
102 - CallbackProxyClient.clientEventBroker.onRenderHUD(partialTicks);  
103 - }  
104 -  
105 - public static void onRenderChat(EventInfo<GuiIngame> e, float partialTicks)  
106 - {  
107 - CallbackProxyClient.clientEventBroker.onRenderChat(e.getSource().getChatGUI(), partialTicks);  
108 - }  
109 -  
110 - public static void postRenderChat(EventInfo<GuiIngame> e, float partialTicks)  
111 - {  
112 - CallbackProxyClient.clientEventBroker.postRenderChat(e.getSource().getChatGUI(), partialTicks);  
113 - }  
114 -  
115 - public static void postRenderHUD(EventInfo<EntityRenderer> e, float partialTicks)  
116 - {  
117 - CallbackProxyClient.clientEventBroker.postRenderHUD(partialTicks);  
118 - }  
119 -  
120 - public static void IntegratedServerCtor(EventInfo<IntegratedServer> e, Minecraft minecraft, String folderName, String worldName,  
121 - WorldSettings worldSettings)  
122 - {  
123 - CallbackProxyClient.clientEventBroker.onStartServer(e.getSource(), folderName, worldName, worldSettings);  
124 - }  
125 -  
126 - public static void onOutboundChat(EventInfo<EntityPlayerSP> e, String message)  
127 - {  
128 - CallbackProxyClient.clientEventBroker.onSendChatMessage(e, message);  
129 - }  
130 -  
131 - public static void onResize(EventInfo<Minecraft> e)  
132 - {  
133 - if (CallbackProxyClient.clientEventBroker == null) return;  
134 - CallbackProxyClient.clientEventBroker.onResize(e.getSource());  
135 - }  
136 -  
137 - public static void preRenderFBO(EventInfo<Minecraft> e)  
138 - {  
139 - if (CallbackProxyClient.clientEventBroker == null) return;  
140 - CallbackProxyClient.fboEnabled = OpenGlHelper.isFramebufferEnabled();  
141 -  
142 - if (CallbackProxyClient.fboEnabled)  
143 - {  
144 - CallbackProxyClient.renderingFBO = true;  
145 - CallbackProxyClient.clientEventBroker.preRenderFBO(e.getSource().getFramebuffer());  
146 - }  
147 - }  
148 -  
149 - public static void postRenderFBO(EventInfo<Minecraft> e)  
150 - {  
151 - if (CallbackProxyClient.clientEventBroker == null) return;  
152 - CallbackProxyClient.renderingFBO = false;  
153 -  
154 - if (CallbackProxyClient.fboEnabled)  
155 - {  
156 - CallbackProxyClient.clientEventBroker.postRenderFBO(e.getSource().getFramebuffer());  
157 - }  
158 - }  
159 -  
160 - public static void renderFBO(EventInfo<Framebuffer> e, int width, int height, boolean flag)  
161 - {  
162 - if (CallbackProxyClient.clientEventBroker == null) return;  
163 - if (CallbackProxyClient.renderingFBO)  
164 - {  
165 - CallbackProxyClient.clientEventBroker.onRenderFBO(e.getSource(), width, height);  
166 - }  
167 -  
168 - CallbackProxyClient.renderingFBO = false;  
169 - }  
170 -  
171 - public static void onRenderWorld(EventInfo<EntityRenderer> e, float partialTicks, long timeSlice)  
172 - {  
173 - CallbackProxyClient.clientEventBroker.onRenderWorld(partialTicks, timeSlice);  
174 - }  
175 -  
176 - public static void onRenderSky(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)  
177 - {  
178 - CallbackProxyClient.clientEventBroker.onRenderSky(partialTicks, pass, timeSlice);  
179 - }  
180 -  
181 - public static void onRenderClouds(EventInfo<EntityRenderer> e, RenderGlobal renderGlobalIn, float partialTicks, int pass)  
182 - {  
183 - CallbackProxyClient.clientEventBroker.onRenderClouds(partialTicks, pass, renderGlobalIn);  
184 - }  
185 -  
186 - public static void onRenderTerrain(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice)  
187 - {  
188 - CallbackProxyClient.clientEventBroker.onRenderTerrain(partialTicks, pass, timeSlice);  
189 - }  
190 -  
191 - public static void onSaveScreenshot(ReturnEventInfo<ScreenShotHelper, IChatComponent> e, File gameDir, String name, int width, int height,  
192 - Framebuffer fbo)  
193 - {  
194 - CallbackProxyClient.clientEventBroker.onScreenshot(e, name, width, height, fbo);  
195 - }  
196 -  
197 - public static void onRenderEntity(ReturnEventInfo<RenderManager, Boolean> e, Entity entity, double xPos, double yPos, double zPos, float yaw,  
198 - float partialTicks, boolean hideBoundingBox, Render render)  
199 - {  
200 - CallbackProxyClient.clientEventBroker.onRenderEntity(e.getSource(), entity, xPos, yPos, zPos, yaw, partialTicks, render);  
201 - }  
202 -  
203 - public static void onPostRenderEntity(ReturnEventInfo<RenderManager, Boolean> e, Entity entity, double xPos, double yPos, double zPos, float yaw,  
204 - float partialTicks, boolean hideBoundingBox, Render render)  
205 - {  
206 - CallbackProxyClient.clientEventBroker.onPostRenderEntity(e.getSource(), entity, xPos, yPos, zPos, yaw, partialTicks, render);  
207 - }  
208 -  
209 - /**  
210 - * Compatiblbe behaviour with FML, this method is called to generate a  
211 - * consistent offline UUID between client and server for a given username.  
212 - */  
213 - public static void generateOfflineUUID(ReturnEventInfo<Session, GameProfile> e)  
214 - {  
215 - Session session = e.getSource();  
216 - UUID uuid = EntityPlayer.getUUID(new GameProfile((UUID)null, session.getUsername()));  
217 - e.setReturnValue(new GameProfile(uuid, session.getUsername()));  
218 - }  
219 -}  
src/client/java/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
1 package com.mumfrey.liteloader.client; 1 package com.mumfrey.liteloader.client;
2 2
  3 +import com.mumfrey.liteloader.client.ducks.IClientNetLoginHandler;
  4 +import com.mumfrey.liteloader.core.ClientPluginChannels;
  5 +import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException;
  6 +
3 import net.minecraft.client.Minecraft; 7 import net.minecraft.client.Minecraft;
4 -import net.minecraft.client.network.NetHandlerLoginClient;  
5 import net.minecraft.network.INetHandler; 8 import net.minecraft.network.INetHandler;
6 import net.minecraft.network.NetworkManager; 9 import net.minecraft.network.NetworkManager;
7 import net.minecraft.network.PacketBuffer; 10 import net.minecraft.network.PacketBuffer;
@@ -12,10 +15,6 @@ import net.minecraft.network.play.client.C17PacketCustomPayload; @@ -12,10 +15,6 @@ import net.minecraft.network.play.client.C17PacketCustomPayload;
12 import net.minecraft.network.play.server.S01PacketJoinGame; 15 import net.minecraft.network.play.server.S01PacketJoinGame;
13 import net.minecraft.network.play.server.S3FPacketCustomPayload; 16 import net.minecraft.network.play.server.S3FPacketCustomPayload;
14 17
15 -import com.mumfrey.liteloader.client.util.PrivateFieldsClient;  
16 -import com.mumfrey.liteloader.core.ClientPluginChannels;  
17 -import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException;  
18 -  
19 /** 18 /**
20 * Handler for client plugin channels 19 * Handler for client plugin channels
21 * 20 *
@@ -67,7 +66,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels @@ -67,7 +66,7 @@ public class ClientPluginChannelsClient extends ClientPluginChannels
67 { 66 {
68 if (netHandler instanceof INetHandlerLoginClient) 67 if (netHandler instanceof INetHandlerLoginClient)
69 { 68 {
70 - NetworkManager networkManager = PrivateFieldsClient.netManager.get(((NetHandlerLoginClient)netHandler)); 69 + NetworkManager networkManager = ((IClientNetLoginHandler)netHandler).getNetMgr();
71 networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); 70 networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData));
72 } 71 }
73 else if (netHandler instanceof INetHandlerPlayClient) 72 else if (netHandler instanceof INetHandlerPlayClient)
src/client/java/com/mumfrey/liteloader/client/ClientProxy.java 0 → 100644
  1 +package com.mumfrey.liteloader.client;
  2 +
  3 +import java.io.File;
  4 +
  5 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  7 +
  8 +import com.mumfrey.liteloader.client.ducks.IFramebuffer;
  9 +import com.mumfrey.liteloader.core.Proxy;
  10 +
  11 +import net.minecraft.client.Minecraft;
  12 +import net.minecraft.client.gui.GuiNewChat;
  13 +import net.minecraft.client.renderer.RenderGlobal;
  14 +import net.minecraft.client.renderer.entity.Render;
  15 +import net.minecraft.client.renderer.entity.RenderManager;
  16 +import net.minecraft.client.shader.Framebuffer;
  17 +import net.minecraft.entity.Entity;
  18 +import net.minecraft.server.integrated.IntegratedServer;
  19 +import net.minecraft.util.IChatComponent;
  20 +import net.minecraft.world.WorldSettings;
  21 +
  22 +/**
  23 + * Proxy class which handles the redirected calls from the injected callbacks
  24 + * and routes them to the relevant liteloader handler classes. We do this rather
  25 + * than patching a bunch of bytecode into the packet classes themselves because
  26 + * this is easier to maintain.
  27 + *
  28 + * @author Adam Mummery-Smith
  29 + */
  30 +public abstract class ClientProxy extends Proxy
  31 +{
  32 + private static LiteLoaderEventBrokerClient broker;
  33 +
  34 + private ClientProxy() {}
  35 +
  36 + public static void onStartupComplete()
  37 + {
  38 + Proxy.onStartupComplete();
  39 +
  40 + ClientProxy.broker = LiteLoaderEventBrokerClient.getInstance();
  41 +
  42 + if (ClientProxy.broker == null)
  43 + {
  44 + throw new RuntimeException("LiteLoader failed to start up properly."
  45 + + " The game is in an unstable state and must shut down now. Check the developer log for startup errors");
  46 + }
  47 +
  48 + ClientProxy.broker.onStartupComplete();
  49 + }
  50 +
  51 + public static void onTimerUpdate()
  52 + {
  53 + ClientProxy.broker.onTimerUpdate();
  54 + }
  55 +
  56 + public static void newTick()
  57 + {
  58 + }
  59 +
  60 + public static void onTick()
  61 + {
  62 + ClientProxy.broker.onTick();
  63 + }
  64 +
  65 + public static void onRender()
  66 + {
  67 + ClientProxy.broker.onRender();
  68 + }
  69 +
  70 + public static void preRenderGUI(float partialTicks)
  71 + {
  72 + ClientProxy.broker.preRenderGUI(partialTicks);
  73 + }
  74 +
  75 + public static void onSetupCameraTransform(int pass, float partialTicks, long timeSlice)
  76 + {
  77 + ClientProxy.broker.onSetupCameraTransform(pass, partialTicks, timeSlice);
  78 + }
  79 +
  80 + public static void postRenderEntities(int pass, float partialTicks, long timeSlice)
  81 + {
  82 + ClientProxy.broker.postRenderEntities(partialTicks, timeSlice);
  83 + }
  84 +
  85 + public static void postRender(float partialTicks, long timeSlice)
  86 + {
  87 + ClientProxy.broker.postRender(partialTicks, timeSlice);
  88 + }
  89 +
  90 + public static void onRenderHUD(float partialTicks)
  91 + {
  92 + ClientProxy.broker.onRenderHUD(partialTicks);
  93 + }
  94 +
  95 + public static void onRenderChat(GuiNewChat chatGui, float partialTicks)
  96 + {
  97 + ClientProxy.broker.onRenderChat(chatGui, partialTicks);
  98 + }
  99 +
  100 + public static void postRenderChat(GuiNewChat chatGui, float partialTicks)
  101 + {
  102 + ClientProxy.broker.postRenderChat(chatGui, partialTicks);
  103 + }
  104 +
  105 + public static void postRenderHUD(float partialTicks)
  106 + {
  107 + ClientProxy.broker.postRenderHUD(partialTicks);
  108 + }
  109 +
  110 + public static void onCreateIntegratedServer(IntegratedServer server, String folderName, String worldName, WorldSettings worldSettings)
  111 + {
  112 + ClientProxy.broker.onStartServer(server, folderName, worldName, worldSettings);
  113 + }
  114 +
  115 + public static void onOutboundChat(CallbackInfo e, String message)
  116 + {
  117 + ClientProxy.broker.onSendChatMessage(e, message);
  118 + }
  119 +
  120 + public static void onResize(Minecraft mc)
  121 + {
  122 + if (ClientProxy.broker == null) return;
  123 + ClientProxy.broker.onResize(mc);
  124 + }
  125 +
  126 + public static void preRenderFBO(Framebuffer frameBufferMc)
  127 + {
  128 + if (ClientProxy.broker == null) return;
  129 + if (frameBufferMc instanceof IFramebuffer)
  130 + {
  131 + ((IFramebuffer)frameBufferMc).setDispatchRenderEvent(true);
  132 + }
  133 + ClientProxy.broker.preRenderFBO(frameBufferMc);
  134 + }
  135 +
  136 + public static void postRenderFBO(Framebuffer frameBufferMc)
  137 + {
  138 + if (ClientProxy.broker == null) return;
  139 + ClientProxy.broker.postRenderFBO(frameBufferMc);
  140 + }
  141 +
  142 + public static void renderFBO(Framebuffer frameBufferMc, int width, int height, boolean flag)
  143 + {
  144 + if (ClientProxy.broker == null) return;
  145 + ClientProxy.broker.onRenderFBO(frameBufferMc, width, height);
  146 + }
  147 +
  148 + public static void onRenderWorld(float partialTicks, long timeSlice)
  149 + {
  150 + ClientProxy.broker.onRenderWorld(partialTicks, timeSlice);
  151 + }
  152 +
  153 + public static void onRenderSky(int pass, float partialTicks, long timeSlice)
  154 + {
  155 + ClientProxy.broker.onRenderSky(partialTicks, pass, timeSlice);
  156 + }
  157 +
  158 + public static void onRenderClouds(RenderGlobal renderGlobalIn, float partialTicks, int pass)
  159 + {
  160 + ClientProxy.broker.onRenderClouds(partialTicks, pass, renderGlobalIn);
  161 + }
  162 +
  163 + public static void onRenderTerrain(int pass, float partialTicks, long timeSlice)
  164 + {
  165 + ClientProxy.broker.onRenderTerrain(partialTicks, pass, timeSlice);
  166 + }
  167 +
  168 + public static void onSaveScreenshot(CallbackInfoReturnable<IChatComponent> ci, File gameDir, String name, int width, int height,
  169 + Framebuffer fbo)
  170 + {
  171 + ClientProxy.broker.onScreenshot(ci, name, width, height, fbo);
  172 + }
  173 +
  174 + public static void onRenderEntity(RenderManager source, Render render, Entity entity, double x, double y, double z, float yaw, float pTicks)
  175 + {
  176 + ClientProxy.broker.onRenderEntity(source, entity, x, y, z, yaw, pTicks, render);
  177 + }
  178 +
  179 + public static void onPostRenderEntity(RenderManager source, Render render, Entity entity, double x, double y, double z, float yaw, float pTicks)
  180 + {
  181 + ClientProxy.broker.onPostRenderEntity(source, entity, x, y, z, yaw, pTicks, render);
  182 + }
  183 +}
src/client/java/com/mumfrey/liteloader/client/LiteLoaderEventBrokerClient.java
1 package com.mumfrey.liteloader.client; 1 package com.mumfrey.liteloader.client;
2 2
3 -import net.minecraft.client.Minecraft;  
4 -import net.minecraft.client.entity.EntityPlayerSP;  
5 -import net.minecraft.client.gui.GuiNewChat;  
6 -import net.minecraft.client.gui.ScaledResolution;  
7 -import net.minecraft.client.renderer.RenderGlobal;  
8 -import net.minecraft.client.renderer.entity.Render;  
9 -import net.minecraft.client.renderer.entity.RenderManager;  
10 -import net.minecraft.client.resources.IResourceManager;  
11 -import net.minecraft.client.resources.IResourceManagerReloadListener;  
12 -import net.minecraft.client.shader.Framebuffer;  
13 -import net.minecraft.entity.Entity;  
14 -import net.minecraft.network.play.client.C01PacketChatMessage;  
15 -import net.minecraft.server.integrated.IntegratedServer;  
16 -import net.minecraft.util.IChatComponent;  
17 -import net.minecraft.util.ScreenShotHelper;  
18 -import net.minecraft.util.Timer;  
19 -  
20 import org.lwjgl.input.Mouse; 3 import org.lwjgl.input.Mouse;
  4 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  5 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
21 6
22 import com.mumfrey.liteloader.*; 7 import com.mumfrey.liteloader.*;
23 import com.mumfrey.liteloader.client.overlays.IEntityRenderer; 8 import com.mumfrey.liteloader.client.overlays.IEntityRenderer;
@@ -31,12 +16,28 @@ import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; @@ -31,12 +16,28 @@ import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp;
31 import com.mumfrey.liteloader.core.event.ProfilingHandlerList; 16 import com.mumfrey.liteloader.core.event.ProfilingHandlerList;
32 import com.mumfrey.liteloader.interfaces.FastIterableDeque; 17 import com.mumfrey.liteloader.interfaces.FastIterableDeque;
33 import com.mumfrey.liteloader.launch.LoaderProperties; 18 import com.mumfrey.liteloader.launch.LoaderProperties;
34 -import com.mumfrey.liteloader.transformers.event.EventInfo;  
35 -import com.mumfrey.liteloader.transformers.event.ReturnEventInfo;  
36 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 19 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
37 20
  21 +import net.minecraft.client.Minecraft;
  22 +import net.minecraft.client.gui.GuiNewChat;
  23 +import net.minecraft.client.gui.ScaledResolution;
  24 +import net.minecraft.client.renderer.RenderGlobal;
  25 +import net.minecraft.client.renderer.entity.Render;
  26 +import net.minecraft.client.renderer.entity.RenderManager;
  27 +import net.minecraft.client.resources.IResourceManager;
  28 +import net.minecraft.client.resources.IResourceManagerReloadListener;
  29 +import net.minecraft.client.shader.Framebuffer;
  30 +import net.minecraft.entity.Entity;
  31 +import net.minecraft.network.play.client.C01PacketChatMessage;
  32 +import net.minecraft.server.integrated.IntegratedServer;
  33 +import net.minecraft.util.IChatComponent;
  34 +import net.minecraft.util.Timer;
  35 +
38 public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker<Minecraft, IntegratedServer> implements IResourceManagerReloadListener 36 public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker<Minecraft, IntegratedServer> implements IResourceManagerReloadListener
39 { 37 {
  38 + /**
  39 + * Singleton
  40 + */
40 private static LiteLoaderEventBrokerClient instance; 41 private static LiteLoaderEventBrokerClient instance;
41 42
42 /** 43 /**
@@ -93,7 +94,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft @@ -93,7 +94,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
93 this.tickListeners = new ProfilingHandlerList<Tickable>(Tickable.class, this.engineClient.getProfiler()); 94 this.tickListeners = new ProfilingHandlerList<Tickable>(Tickable.class, this.engineClient.getProfiler());
94 } 95 }
95 96
96 - static LiteLoaderEventBrokerClient getInstance() 97 + public static LiteLoaderEventBrokerClient getInstance()
97 { 98 {
98 return LiteLoaderEventBrokerClient.instance; 99 return LiteLoaderEventBrokerClient.instance;
99 } 100 }
@@ -363,8 +364,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft @@ -363,8 +364,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
363 */ 364 */
364 void postRenderChat(GuiNewChat chatGui, float partialTicks) 365 void postRenderChat(GuiNewChat chatGui, float partialTicks)
365 { 366 {
366 - GuiNewChat chat = this.engineClient.getChatGUI();  
367 - this.chatRenderListeners.all().onPostRenderChat(this.screenWidth, this.screenHeight, chat); 367 + this.chatRenderListeners.all().onPostRenderChat(this.screenWidth, this.screenHeight, chatGui);
368 } 368 }
369 369
370 /** 370 /**
@@ -442,7 +442,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft @@ -442,7 +442,7 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
442 /** 442 /**
443 * @param message 443 * @param message
444 */ 444 */
445 - void onSendChatMessage(EventInfo<EntityPlayerSP> e, String message) 445 + void onSendChatMessage(CallbackInfo e, String message)
446 { 446 {
447 if (!this.outboundChatFilters.all().onSendChatMessage(message)) 447 if (!this.outboundChatFilters.all().onSendChatMessage(message))
448 { 448 {
@@ -523,13 +523,13 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft @@ -523,13 +523,13 @@ public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker&lt;Minecraft
523 * @param height 523 * @param height
524 * @param fbo 524 * @param fbo
525 */ 525 */
526 - void onScreenshot(ReturnEventInfo<ScreenShotHelper, IChatComponent> e, String name, int width, int height, Framebuffer fbo) 526 + void onScreenshot(CallbackInfoReturnable<IChatComponent> ci, String name, int width, int height, Framebuffer fbo)
527 { 527 {
528 - ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(e.getReturnValue()); 528 + ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(ci.getReturnValue());
529 529
530 if (!this.screenshotListeners.all().onSaveScreenshot(name, width, height, fbo, ret)) 530 if (!this.screenshotListeners.all().onSaveScreenshot(name, width, height, fbo, ret))
531 { 531 {
532 - e.setReturnValue(ret.get()); 532 + ci.setReturnValue(ret.get());
533 } 533 }
534 } 534 }
535 535
src/client/java/com/mumfrey/liteloader/client/PacketEventsClient.java
1 package com.mumfrey.liteloader.client; 1 package com.mumfrey.liteloader.client;
2 2
3 -import net.minecraft.client.Minecraft;  
4 -import net.minecraft.network.INetHandler;  
5 -import net.minecraft.network.Packet;  
6 -import net.minecraft.network.login.INetHandlerLoginClient;  
7 -import net.minecraft.network.login.server.S02PacketLoginSuccess;  
8 -import net.minecraft.network.play.INetHandlerPlayClient;  
9 -import net.minecraft.network.play.server.S01PacketJoinGame;  
10 -import net.minecraft.network.play.server.S02PacketChat;  
11 -import net.minecraft.server.MinecraftServer;  
12 -import net.minecraft.util.ChatComponentText;  
13 -import net.minecraft.util.IChatComponent;  
14 -import net.minecraft.util.IThreadListener;  
15 -  
16 -import com.mojang.realmsclient.RealmsMainScreen;  
17 import com.mojang.realmsclient.dto.RealmsServer; 3 import com.mojang.realmsclient.dto.RealmsServer;
18 -import com.mumfrey.liteloader.ChatFilter;  
19 -import com.mumfrey.liteloader.ChatListener;  
20 -import com.mumfrey.liteloader.JoinGameListener;  
21 -import com.mumfrey.liteloader.PostLoginListener;  
22 -import com.mumfrey.liteloader.PreJoinGameListener;  
23 -import com.mumfrey.liteloader.client.util.PrivateFieldsClient; 4 +import com.mumfrey.liteloader.*;
  5 +import com.mumfrey.liteloader.common.ducks.IChatPacket;
24 import com.mumfrey.liteloader.common.transformers.PacketEventInfo; 6 import com.mumfrey.liteloader.common.transformers.PacketEventInfo;
25 import com.mumfrey.liteloader.core.ClientPluginChannels; 7 import com.mumfrey.liteloader.core.ClientPluginChannels;
26 import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; 8 import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate;
@@ -32,10 +14,22 @@ import com.mumfrey.liteloader.core.event.HandlerList; @@ -32,10 +14,22 @@ import com.mumfrey.liteloader.core.event.HandlerList;
32 import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; 14 import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp;
33 import com.mumfrey.liteloader.core.runtime.Packets; 15 import com.mumfrey.liteloader.core.runtime.Packets;
34 import com.mumfrey.liteloader.interfaces.FastIterableDeque; 16 import com.mumfrey.liteloader.interfaces.FastIterableDeque;
35 -import com.mumfrey.liteloader.transformers.event.EventInfo;  
36 import com.mumfrey.liteloader.util.ChatUtilities; 17 import com.mumfrey.liteloader.util.ChatUtilities;
37 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 18 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
38 19
  20 +import net.minecraft.client.Minecraft;
  21 +import net.minecraft.network.INetHandler;
  22 +import net.minecraft.network.Packet;
  23 +import net.minecraft.network.login.INetHandlerLoginClient;
  24 +import net.minecraft.network.login.server.S02PacketLoginSuccess;
  25 +import net.minecraft.network.play.INetHandlerPlayClient;
  26 +import net.minecraft.network.play.server.S01PacketJoinGame;
  27 +import net.minecraft.network.play.server.S02PacketChat;
  28 +import net.minecraft.server.MinecraftServer;
  29 +import net.minecraft.util.ChatComponentText;
  30 +import net.minecraft.util.IChatComponent;
  31 +import net.minecraft.util.IThreadListener;
  32 +
39 /** 33 /**
40 * Client-side packet event handlers 34 * Client-side packet event handlers
41 * 35 *
@@ -113,7 +107,7 @@ public class PacketEventsClient extends PacketEvents @@ -113,7 +107,7 @@ public class PacketEventsClient extends PacketEvents
113 this.postLoginListeners.add(postLoginListener); 107 this.postLoginListeners.add(postLoginListener);
114 } 108 }
115 109
116 - public static void onJoinRealm(EventInfo<RealmsMainScreen> e, long arg1, RealmsServer server) 110 + public static void onJoinRealm(long serverId, RealmsServer server)
117 { 111 {
118 PacketEventsClient.joiningRealm = server; 112 PacketEventsClient.joiningRealm = server;
119 } 113 }
@@ -254,7 +248,7 @@ public class PacketEventsClient extends PacketEvents @@ -254,7 +248,7 @@ public class PacketEventsClient extends PacketEvents
254 try 248 try
255 { 249 {
256 chat = ChatUtilities.convertLegacyCodes(chat); 250 chat = ChatUtilities.convertLegacyCodes(chat);
257 - PrivateFieldsClient.chatMessage.set(packet, chat); 251 + ((IChatPacket)packet).setChatComponent(chat);
258 } 252 }
259 catch (Exception ex) 253 catch (Exception ex)
260 { 254 {
src/client/java/com/mumfrey/liteloader/client/SoundHandlerReloadInhibitor.java
@@ -2,13 +2,13 @@ package com.mumfrey.liteloader.client; @@ -2,13 +2,13 @@ package com.mumfrey.liteloader.client;
2 2
3 import java.util.List; 3 import java.util.List;
4 4
  5 +import com.mumfrey.liteloader.client.ducks.IReloadable;
  6 +import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
  7 +
5 import net.minecraft.client.audio.SoundHandler; 8 import net.minecraft.client.audio.SoundHandler;
6 import net.minecraft.client.resources.IResourceManagerReloadListener; 9 import net.minecraft.client.resources.IResourceManagerReloadListener;
7 import net.minecraft.client.resources.SimpleReloadableResourceManager; 10 import net.minecraft.client.resources.SimpleReloadableResourceManager;
8 11
9 -import com.mumfrey.liteloader.client.util.PrivateFieldsClient;  
10 -import com.mumfrey.liteloader.util.log.LiteLoaderLogger;  
11 -  
12 /** 12 /**
13 * Manager object which handles inhibiting the sound handler's reload 13 * Manager object which handles inhibiting the sound handler's reload
14 * notification at startup. 14 * notification at startup.
@@ -55,7 +55,7 @@ public class SoundHandlerReloadInhibitor @@ -55,7 +55,7 @@ public class SoundHandlerReloadInhibitor
55 { 55 {
56 if (!this.inhibited) 56 if (!this.inhibited)
57 { 57 {
58 - List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager); 58 + List<IResourceManagerReloadListener> reloadListeners = ((IReloadable)this.resourceManager).getReloadListeners();
59 if (reloadListeners != null) 59 if (reloadListeners != null)
60 { 60 {
61 this.storedIndex = reloadListeners.indexOf(this.soundHandler); 61 this.storedIndex = reloadListeners.indexOf(this.soundHandler);
@@ -89,7 +89,7 @@ public class SoundHandlerReloadInhibitor @@ -89,7 +89,7 @@ public class SoundHandlerReloadInhibitor
89 { 89 {
90 if (this.inhibited) 90 if (this.inhibited)
91 { 91 {
92 - List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager); 92 + List<IResourceManagerReloadListener> reloadListeners = ((IReloadable)this.resourceManager).getReloadListeners();
93 if (reloadListeners != null) 93 if (reloadListeners != null)
94 { 94 {
95 if (this.storedIndex > -1) 95 if (this.storedIndex > -1)
src/client/java/com/mumfrey/liteloader/client/api/LiteLoaderCoreAPIClient.java
@@ -6,6 +6,7 @@ import net.minecraft.client.Minecraft; @@ -6,6 +6,7 @@ import net.minecraft.client.Minecraft;
6 import net.minecraft.server.integrated.IntegratedServer; 6 import net.minecraft.server.integrated.IntegratedServer;
7 7
8 import com.google.common.collect.ImmutableList; 8 import com.google.common.collect.ImmutableList;
  9 +import com.google.common.collect.ObjectArrays;
9 import com.mumfrey.liteloader.api.CoreProvider; 10 import com.mumfrey.liteloader.api.CoreProvider;
10 import com.mumfrey.liteloader.api.CustomisationProvider; 11 import com.mumfrey.liteloader.api.CustomisationProvider;
11 import com.mumfrey.liteloader.api.InterfaceProvider; 12 import com.mumfrey.liteloader.api.InterfaceProvider;
@@ -36,12 +37,20 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -36,12 +37,20 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
36 37
37 private static final String[] requiredDownstreamTransformers = { 38 private static final String[] requiredDownstreamTransformers = {
38 LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer", 39 LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer",
39 - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer",  
40 LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftTransformer", 40 LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftTransformer",
41 LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.json.ModEventInjectionTransformer" 41 LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.json.ModEventInjectionTransformer"
42 }; 42 };
43 43
44 private ObjectFactory<Minecraft, IntegratedServer> objectFactory; 44 private ObjectFactory<Minecraft, IntegratedServer> objectFactory;
  45 +
  46 + @Override
  47 + public String[] getMixinConfigs()
  48 + {
  49 + String[] commonConfigs = super.getMixinConfigs();
  50 + return ObjectArrays.concat(commonConfigs, new String[] {
  51 + "mixins.liteloader.client.json"
  52 + }, String.class);
  53 + }
45 54
46 /* (non-Javadoc) 55 /* (non-Javadoc)
47 * @see com.mumfrey.liteloader.api.LiteAPI#getRequiredTransformers() 56 * @see com.mumfrey.liteloader.api.LiteAPI#getRequiredTransformers()
@@ -69,11 +78,11 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -69,11 +78,11 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
69 public List<CustomisationProvider> getCustomisationProviders() 78 public List<CustomisationProvider> getCustomisationProviders()
70 { 79 {
71 return ImmutableList.<CustomisationProvider>of 80 return ImmutableList.<CustomisationProvider>of
72 - (  
73 - new LiteLoaderBrandingProvider(),  
74 - new LiteLoaderModInfoDecorator(),  
75 - new Translator()  
76 - ); 81 + (
  82 + new LiteLoaderBrandingProvider(),
  83 + new LiteLoaderModInfoDecorator(),
  84 + new Translator()
  85 + );
77 } 86 }
78 87
79 /* (non-Javadoc) 88 /* (non-Javadoc)
@@ -83,10 +92,10 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -83,10 +92,10 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
83 public List<CoreProvider> getCoreProviders() 92 public List<CoreProvider> getCoreProviders()
84 { 93 {
85 return ImmutableList.<CoreProvider>of 94 return ImmutableList.<CoreProvider>of
86 - (  
87 - new LiteLoaderCoreProviderClient(this.properties),  
88 - LiteLoader.getInput()  
89 - ); 95 + (
  96 + new LiteLoaderCoreProviderClient(this.properties),
  97 + LiteLoader.getInput()
  98 + );
90 } 99 }
91 100
92 101
@@ -99,13 +108,13 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -99,13 +108,13 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
99 ObjectFactory<?, ?> objectFactory = this.getObjectFactory(); 108 ObjectFactory<?, ?> objectFactory = this.getObjectFactory();
100 109
101 return ImmutableList.<InterfaceProvider>of 110 return ImmutableList.<InterfaceProvider>of
102 - (  
103 - objectFactory.getEventBroker(),  
104 - objectFactory.getPacketEventBroker(),  
105 - objectFactory.getClientPluginChannels(),  
106 - objectFactory.getServerPluginChannels(),  
107 - MessageBus.getInstance()  
108 - ); 111 + (
  112 + objectFactory.getEventBroker(),
  113 + objectFactory.getPacketEventBroker(),
  114 + objectFactory.getClientPluginChannels(),
  115 + objectFactory.getServerPluginChannels(),
  116 + MessageBus.getInstance()
  117 + );
109 } 118 }
110 119
111 /* (non-Javadoc) 120 /* (non-Javadoc)
@@ -115,9 +124,9 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -115,9 +124,9 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
115 public List<Observer> getPreInitObservers() 124 public List<Observer> getPreInitObservers()
116 { 125 {
117 return ImmutableList.<Observer>of 126 return ImmutableList.<Observer>of
118 - (  
119 - new ModEvents()  
120 - ); 127 + (
  128 + new ModEvents()
  129 + );
121 } 130 }
122 131
123 /* (non-Javadoc) 132 /* (non-Javadoc)
@@ -129,11 +138,11 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI @@ -129,11 +138,11 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI
129 ObjectFactory<?, ?> objectFactory = this.getObjectFactory(); 138 ObjectFactory<?, ?> objectFactory = this.getObjectFactory();
130 139
131 return ImmutableList.<Observer>of 140 return ImmutableList.<Observer>of
132 - (  
133 - new ResourceObserver(),  
134 - objectFactory.getPanelManager(),  
135 - objectFactory.getEventBroker()  
136 - ); 141 + (
  142 + new ResourceObserver(),
  143 + objectFactory.getPanelManager(),
  144 + objectFactory.getEventBroker()
  145 + );
137 } 146 }
138 147
139 /* (non-Javadoc) 148 /* (non-Javadoc)
src/client/java/com/mumfrey/liteloader/client/ducks/IClientNetLoginHandler.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +import net.minecraft.network.NetworkManager;
  4 +
  5 +public interface IClientNetLoginHandler
  6 +{
  7 + public abstract NetworkManager getNetMgr();
  8 +}
src/client/java/com/mumfrey/liteloader/client/ducks/IFramebuffer.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +public interface IFramebuffer
  4 +{
  5 + public abstract IFramebuffer setDispatchRenderEvent(boolean dispatchRenderEvent);
  6 +
  7 + public abstract boolean isDispatchRenderEvent();
  8 +}
src/client/java/com/mumfrey/liteloader/client/ducks/INamespacedRegistry.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +public interface INamespacedRegistry
  4 +{
  5 + public abstract IObjectIntIdentityMap getUnderlyingMap();
  6 +}
src/client/java/com/mumfrey/liteloader/client/ducks/IObjectIntIdentityMap.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +import java.util.IdentityHashMap;
  4 +import java.util.List;
  5 +
  6 +public interface IObjectIntIdentityMap
  7 +{
  8 + public abstract <V> IdentityHashMap<V, Integer> getIdentityMap();
  9 +
  10 + public abstract <V> List<V> getObjectList();
  11 +}
src/client/java/com/mumfrey/liteloader/client/ducks/IRegistrySimple.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +import java.util.Map;
  4 +
  5 +public interface IRegistrySimple
  6 +{
  7 + public abstract <K, V> Map<K, V> getRegistryObjects();
  8 +}
src/client/java/com/mumfrey/liteloader/client/ducks/IReloadable.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +import java.util.List;
  4 +
  5 +import net.minecraft.client.resources.IResourceManagerReloadListener;
  6 +
  7 +public interface IReloadable
  8 +{
  9 + public abstract List<IResourceManagerReloadListener> getReloadListeners();
  10 +}
src/client/java/com/mumfrey/liteloader/client/ducks/IRenderManager.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import net.minecraft.client.renderer.entity.Render;
  6 +import net.minecraft.entity.Entity;
  7 +
  8 +public interface IRenderManager
  9 +{
  10 + public abstract Map<Class<? extends Entity>, Render> getRenderMap();
  11 +}
src/client/java/com/mumfrey/liteloader/client/ducks/ITileEntityRendererDispatcher.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.ducks;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
  6 +import net.minecraft.tileentity.TileEntity;
  7 +
  8 +public interface ITileEntityRendererDispatcher
  9 +{
  10 + public abstract Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> getSpecialRenderMap();
  11 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinEntityPlayerSP.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  7 +
  8 +import com.mumfrey.liteloader.client.ClientProxy;
  9 +
  10 +import net.minecraft.client.entity.AbstractClientPlayer;
  11 +import net.minecraft.client.entity.EntityPlayerSP;
  12 +
  13 +@Mixin(EntityPlayerSP.class)
  14 +public abstract class MixinEntityPlayerSP extends AbstractClientPlayer
  15 +{
  16 + public MixinEntityPlayerSP()
  17 + {
  18 + super(null, null);
  19 + }
  20 +
  21 + @Inject(method = "sendChatMessage(Ljava/lang/String;)V", at = { @At("HEAD") }, cancellable = true)
  22 + public void onSendChatMessage(String message, CallbackInfo ci)
  23 + {
  24 + ClientProxy.onOutboundChat(ci, message);
  25 + }
  26 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinEntityRenderer.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.At.Shift;
  7 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  8 +
  9 +import com.mumfrey.liteloader.client.ClientProxy;
  10 +
  11 +import net.minecraft.client.renderer.EntityRenderer;
  12 +import net.minecraft.client.renderer.RenderGlobal;
  13 +
  14 +@Mixin(EntityRenderer.class)
  15 +public abstract class MixinEntityRenderer
  16 +{
  17 + @Inject(method = "updateCameraAndRender(F)V", at = @At(
  18 + value = "INVOKE",
  19 + shift = Shift.AFTER,
  20 + target = "Lnet/minecraft/client/renderer/GlStateManager;clear(I)V"
  21 + ))
  22 + private void onPreRenderGUI(float partialTicks, CallbackInfo ci)
  23 + {
  24 + ClientProxy.preRenderGUI(partialTicks);
  25 + }
  26 +
  27 + @Inject(method = "updateCameraAndRender(F)V", at = @At(
  28 + value = "INVOKE",
  29 + target = "Lnet/minecraft/client/gui/GuiIngame;renderGameOverlay(F)V"
  30 + ))
  31 + private void onRenderHUD(float partialTicks, CallbackInfo ci)
  32 + {
  33 + ClientProxy.onRenderHUD(partialTicks);
  34 + }
  35 +
  36 + @Inject(method = "updateCameraAndRender(F)V", at = @At(
  37 + value = "INVOKE",
  38 + shift = Shift.AFTER,
  39 + target = "Lnet/minecraft/client/gui/GuiIngame;renderGameOverlay(F)V"
  40 + ))
  41 + private void onPostRenderHUD(float partialTicks, CallbackInfo ci)
  42 + {
  43 + ClientProxy.postRenderHUD(partialTicks);
  44 + }
  45 +
  46 + @Inject(method = "renderWorld(FJ)V", at = @At(
  47 + value = "INVOKE",
  48 + target = "Lnet/minecraft/profiler/Profiler;startSection(Ljava/lang/String;)V",
  49 + ordinal = 0
  50 + ))
  51 + private void onRenderWorld(float partialTicks, long timeSlice, CallbackInfo ci)
  52 + {
  53 + ClientProxy.onRenderWorld(partialTicks, timeSlice);
  54 + }
  55 +
  56 + @Inject(method = "renderWorld(FJ)V", at = @At(
  57 + value = "INVOKE",
  58 + target = "Lnet/minecraft/profiler/Profiler;endSection()V",
  59 + ordinal = 0
  60 + ))
  61 + private void onPostRender(float partialTicks, long timeSlice, CallbackInfo ci)
  62 + {
  63 + ClientProxy.postRender(partialTicks, timeSlice);
  64 + }
  65 +
  66 + @Inject(method = "renderWorldPass(IFJ)V", at = @At(
  67 + value = "INVOKE_STRING",
  68 + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V",
  69 + args = "ldc=frustum"
  70 + ))
  71 + private void onSetupCameraTransform(int pass, float partialTicks, long timeSlice, CallbackInfo ci)
  72 + {
  73 + ClientProxy.onSetupCameraTransform(pass, partialTicks, timeSlice);
  74 + }
  75 +
  76 + @Inject(method = "renderWorldPass(IFJ)V", at = @At(
  77 + value = "INVOKE_STRING",
  78 + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V",
  79 + args = "ldc=sky"
  80 + ))
  81 + private void onRenderSky(int pass, float partialTicks, long timeSlice, CallbackInfo ci)
  82 + {
  83 + ClientProxy.onRenderSky(pass, partialTicks, timeSlice);
  84 + }
  85 +
  86 + @Inject(method = "renderWorldPass(IFJ)V", at = @At(
  87 + value = "INVOKE_STRING",
  88 + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V",
  89 + args = "ldc=terrain"
  90 + ))
  91 + private void onRenderTerrain(int pass, float partialTicks, long timeSlice, CallbackInfo ci)
  92 + {
  93 + ClientProxy.onRenderTerrain(pass, partialTicks, timeSlice);
  94 +
  95 + }
  96 +
  97 + @Inject(method = "renderWorldPass(IFJ)V", at = @At(
  98 + value = "INVOKE_STRING",
  99 + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V",
  100 + args = "ldc=litParticles"
  101 + ))
  102 + private void onPostRenderEntities(int pass, float partialTicks, long timeSlice, CallbackInfo ci)
  103 + {
  104 + ClientProxy.postRenderEntities(pass, partialTicks, timeSlice);
  105 + }
  106 +
  107 + @Inject(method = "renderCloudsCheck(Lnet/minecraft/client/renderer/RenderGlobal;FI)V", at = @At(
  108 + value = "INVOKE",
  109 + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V"
  110 + ))
  111 + private void onRenderClouds(RenderGlobal renderGlobalIn, float partialTicks, int pass, CallbackInfo ci)
  112 + {
  113 + ClientProxy.onRenderClouds(renderGlobalIn, partialTicks, pass);
  114 + }
  115 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinFramebuffer.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  7 +
  8 +import com.mumfrey.liteloader.client.ClientProxy;
  9 +import com.mumfrey.liteloader.client.ducks.IFramebuffer;
  10 +
  11 +import net.minecraft.client.shader.Framebuffer;
  12 +
  13 +@Mixin(Framebuffer.class)
  14 +public abstract class MixinFramebuffer implements IFramebuffer
  15 +{
  16 + private boolean dispatchRenderEvent;
  17 +
  18 + @Override
  19 + public IFramebuffer setDispatchRenderEvent(boolean dispatchRenderEvent)
  20 + {
  21 + this.dispatchRenderEvent = dispatchRenderEvent;
  22 + return this;
  23 + }
  24 +
  25 + @Override
  26 + public boolean isDispatchRenderEvent()
  27 + {
  28 + return this.dispatchRenderEvent;
  29 + }
  30 +
  31 + @Inject(method = "framebufferRenderExt(IIZ)V", at = @At(
  32 + value = "INVOKE",
  33 + target = "Lnet/minecraft/client/shader/Framebuffer;bindFramebufferTexture()V"
  34 + ))
  35 + private void onRenderFBO(int width, int height, boolean flag, CallbackInfo ci)
  36 + {
  37 + if (this.dispatchRenderEvent)
  38 + {
  39 + ClientProxy.renderFBO((Framebuffer)(Object)this, width, height, flag);
  40 + this.dispatchRenderEvent = false;
  41 + }
  42 + }
  43 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinGuiIngame.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.Shadow;
  5 +import org.spongepowered.asm.mixin.injection.At;
  6 +import org.spongepowered.asm.mixin.injection.At.Shift;
  7 +import org.spongepowered.asm.mixin.injection.Inject;
  8 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  9 +
  10 +import com.mumfrey.liteloader.client.ClientProxy;
  11 +
  12 +import net.minecraft.client.gui.Gui;
  13 +import net.minecraft.client.gui.GuiIngame;
  14 +import net.minecraft.client.gui.GuiNewChat;
  15 +
  16 +@Mixin(GuiIngame.class)
  17 +public abstract class MixinGuiIngame extends Gui
  18 +{
  19 + @Shadow private GuiNewChat persistantChatGUI;
  20 +
  21 + @Inject(method = "renderGameOverlay(F)V", at = @At(
  22 + value = "INVOKE",
  23 + target = "Lnet/minecraft/client/gui/GuiNewChat;drawChat(I)V"
  24 + ))
  25 + private void onRenderChat(float partialTicks, CallbackInfo ci)
  26 + {
  27 + ClientProxy.onRenderChat(this.persistantChatGUI, partialTicks);
  28 + }
  29 +
  30 + @Inject(method = "renderGameOverlay(F)V", at = @At(
  31 + value = "INVOKE",
  32 + shift = Shift.AFTER,
  33 + target = "Lnet/minecraft/client/gui/GuiNewChat;drawChat(I)V"
  34 + ))
  35 + private void postRenderChat(float partialTicks, CallbackInfo ci)
  36 + {
  37 + ClientProxy.postRenderChat(this.persistantChatGUI, partialTicks);
  38 + }
  39 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinIntegratedServer.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.Surrogate;
  7 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  8 +
  9 +import com.mumfrey.liteloader.client.ClientProxy;
  10 +
  11 +import net.minecraft.client.Minecraft;
  12 +import net.minecraft.server.MinecraftServer;
  13 +import net.minecraft.server.integrated.IntegratedServer;
  14 +import net.minecraft.world.WorldSettings;
  15 +
  16 +@Mixin(IntegratedServer.class)
  17 +public abstract class MixinIntegratedServer extends MinecraftServer
  18 +{
  19 + public MixinIntegratedServer()
  20 + {
  21 + super(null, null);
  22 + }
  23 +
  24 + @Inject(
  25 + method = "<init>*", //(Lnet/minecraft/client/Minecraft;Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/world/WorldSettings;)V",
  26 + at = @At("RETURN"),
  27 + remap = false
  28 + )
  29 + private void onConstructed(Minecraft mcIn, String folderName, String worldName, WorldSettings settings, CallbackInfo ci)
  30 + {
  31 + ClientProxy.onCreateIntegratedServer((IntegratedServer)(Object)this, folderName, worldName, settings);
  32 + }
  33 +
  34 + @Surrogate
  35 + private void onConstructed(Minecraft mcIn, CallbackInfo ci)
  36 + {
  37 +// ClientProxy.onCreateIntegratedServer((IntegratedServer)(Object)this, folderName, worldName, settings);
  38 + }
  39 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinMinecraft.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.At.Shift;
  6 +import org.spongepowered.asm.mixin.injection.Inject;
  7 +import org.spongepowered.asm.mixin.injection.Redirect;
  8 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  9 +
  10 +import com.mumfrey.liteloader.client.ClientProxy;
  11 +
  12 +import net.minecraft.client.Minecraft;
  13 +import net.minecraft.client.renderer.OpenGlHelper;
  14 +import net.minecraft.client.shader.Framebuffer;
  15 +
  16 +@Mixin(Minecraft.class)
  17 +public abstract class MixinMinecraft
  18 +{
  19 + @Inject(method = "startGame()V", at = @At("RETURN"))
  20 + private void onStartupComplete(CallbackInfo ci)
  21 + {
  22 + ClientProxy.onStartupComplete();
  23 + }
  24 +
  25 + @Inject(method = "updateFramebufferSize()V", at = @At("HEAD"))
  26 + private void onResize(CallbackInfo ci)
  27 + {
  28 + ClientProxy.onResize((Minecraft)(Object)this);
  29 + }
  30 +
  31 + @Inject(method = "runTick()V", at = @At("HEAD"))
  32 + private void newTick(CallbackInfo ci)
  33 + {
  34 + ClientProxy.newTick();
  35 + }
  36 +
  37 + @Inject(method = "runGameLoop()V", at = @At(
  38 + value = "INVOKE",
  39 + shift = Shift.AFTER,
  40 + target = "Lnet/minecraft/client/renderer/EntityRenderer;updateCameraAndRender(F)V"
  41 + ))
  42 + private void onTick(CallbackInfo ci)
  43 + {
  44 + ClientProxy.onTick();
  45 + }
  46 +
  47 + @Redirect(method = "runGameLoop()V", at = @At(
  48 + value = "INVOKE",
  49 + target = "Lnet/minecraft/client/shader/Framebuffer;framebufferRender(II)V"
  50 + ))
  51 + private void renderFBO(Framebuffer framebufferMc, int width, int height)
  52 + {
  53 + boolean fboEnabled = OpenGlHelper.isFramebufferEnabled();
  54 + if (fboEnabled)
  55 + {
  56 + ClientProxy.preRenderFBO(framebufferMc);
  57 + framebufferMc.framebufferRender(width, height);
  58 + ClientProxy.preRenderFBO(framebufferMc);
  59 + }
  60 + else
  61 + {
  62 + framebufferMc.framebufferRender(width, height);
  63 + }
  64 + }
  65 +
  66 + @Inject(method = "runGameLoop()V", at = @At(
  67 + value = "INVOKE_STRING",
  68 + target = "Lnet/minecraft/profiler/Profiler;startSection(Ljava/lang/String;)V",
  69 + args = "ldc=tick"
  70 + ))
  71 + private void onTimerUpdate(CallbackInfo ci)
  72 + {
  73 + ClientProxy.onTimerUpdate();
  74 + }
  75 +
  76 + @Inject (method = "runGameLoop()V", at = @At(
  77 + value = "INVOKE_STRING",
  78 + target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V",
  79 + args = "ldc=gameRenderer"
  80 + ))
  81 + private void onRender(CallbackInfo ci)
  82 + {
  83 + ClientProxy.onRender();
  84 + }
  85 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinNetHandlerLoginClient.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.Shadow;
  5 +
  6 +import com.mumfrey.liteloader.client.ducks.IClientNetLoginHandler;
  7 +
  8 +import net.minecraft.client.network.NetHandlerLoginClient;
  9 +import net.minecraft.network.NetworkManager;
  10 +
  11 +@Mixin(NetHandlerLoginClient.class)
  12 +public abstract class MixinNetHandlerLoginClient implements IClientNetLoginHandler
  13 +{
  14 + @Shadow private NetworkManager networkManager;
  15 +
  16 + @Override
  17 + public NetworkManager getNetMgr()
  18 + {
  19 + return this.networkManager;
  20 + }
  21 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinObjectIntIdentityMap.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.util.IdentityHashMap;
  4 +import java.util.List;
  5 +
  6 +import org.spongepowered.asm.mixin.Mixin;
  7 +import org.spongepowered.asm.mixin.Shadow;
  8 +
  9 +import com.mumfrey.liteloader.client.ducks.IObjectIntIdentityMap;
  10 +
  11 +import net.minecraft.util.ObjectIntIdentityMap;
  12 +
  13 +@Mixin(ObjectIntIdentityMap.class)
  14 +public abstract class MixinObjectIntIdentityMap implements IObjectIntIdentityMap
  15 +{
  16 + @Shadow private IdentityHashMap<?, Integer> identityMap;
  17 + @Shadow private List<?> objectList;
  18 +
  19 + @SuppressWarnings("unchecked")
  20 + @Override
  21 + public <V> IdentityHashMap<V, Integer> getIdentityMap()
  22 + {
  23 + return (IdentityHashMap<V, Integer>)this.identityMap;
  24 + }
  25 +
  26 + @SuppressWarnings("unchecked")
  27 + @Override
  28 + public <V> List<V> getObjectList()
  29 + {
  30 + return (List<V>)this.objectList;
  31 + }
  32 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRealmsMainScreen.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  7 +import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
  8 +
  9 +import com.mojang.realmsclient.RealmsMainScreen;
  10 +import com.mojang.realmsclient.dto.RealmsServer;
  11 +import com.mumfrey.liteloader.client.PacketEventsClient;
  12 +
  13 +import net.minecraft.realms.RealmsScreen;
  14 +
  15 +@Mixin(value = RealmsMainScreen.class, remap = false)
  16 +public abstract class MixinRealmsMainScreen extends RealmsScreen
  17 +{
  18 + @Inject(method = "play(J)V", locals = LocalCapture.CAPTURE_FAILSOFT, at = @At(
  19 + value = "INVOKE",
  20 + target = "Lcom/mojang/realmsclient/RealmsMainScreen;stopRealmsFetcherAndPinger()V"
  21 + ))
  22 + private void onJoinRealm(long serverId, CallbackInfo ci, RealmsServer server)
  23 + {
  24 + PacketEventsClient.onJoinRealm(serverId, server);
  25 + }
  26 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRegistryNamespaced.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.Shadow;
  5 +
  6 +import com.mumfrey.liteloader.client.ducks.INamespacedRegistry;
  7 +import com.mumfrey.liteloader.client.ducks.IObjectIntIdentityMap;
  8 +
  9 +import net.minecraft.util.ObjectIntIdentityMap;
  10 +import net.minecraft.util.RegistryNamespaced;
  11 +import net.minecraft.util.RegistrySimple;
  12 +
  13 +@Mixin(RegistryNamespaced.class)
  14 +public abstract class MixinRegistryNamespaced extends RegistrySimple implements INamespacedRegistry
  15 +{
  16 + @Shadow protected ObjectIntIdentityMap underlyingIntegerMap;
  17 +
  18 + @Override
  19 + public IObjectIntIdentityMap getUnderlyingMap()
  20 + {
  21 + return (IObjectIntIdentityMap)this.underlyingIntegerMap;
  22 + }
  23 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRegistrySimple.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import org.spongepowered.asm.mixin.Mixin;
  6 +import org.spongepowered.asm.mixin.Shadow;
  7 +
  8 +import com.mumfrey.liteloader.client.ducks.IRegistrySimple;
  9 +
  10 +import net.minecraft.util.RegistrySimple;
  11 +
  12 +@Mixin(RegistrySimple.class)
  13 +public abstract class MixinRegistrySimple implements IRegistrySimple
  14 +{
  15 + @Shadow protected Map<?, ?> registryObjects;
  16 +
  17 + @SuppressWarnings("unchecked")
  18 + @Override
  19 + public <K, V> Map<K, V> getRegistryObjects()
  20 + {
  21 + return (Map<K, V>)this.registryObjects;
  22 + }
  23 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinRenderManager.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import org.spongepowered.asm.mixin.Mixin;
  6 +import org.spongepowered.asm.mixin.Shadow;
  7 +import org.spongepowered.asm.mixin.injection.At;
  8 +import org.spongepowered.asm.mixin.injection.Redirect;
  9 +
  10 +import com.mumfrey.liteloader.client.ClientProxy;
  11 +import com.mumfrey.liteloader.client.ducks.IRenderManager;
  12 +
  13 +import net.minecraft.client.renderer.entity.Render;
  14 +import net.minecraft.client.renderer.entity.RenderManager;
  15 +import net.minecraft.entity.Entity;
  16 +
  17 +@Mixin(RenderManager.class)
  18 +public abstract class MixinRenderManager implements IRenderManager
  19 +{
  20 + @Shadow private Map<Class<? extends Entity>, Render> entityRenderMap;
  21 +
  22 + @Override
  23 + public Map<Class<? extends Entity>, Render> getRenderMap()
  24 + {
  25 + return this.entityRenderMap;
  26 + }
  27 +
  28 + @Redirect(method = "doRenderEntity(Lnet/minecraft/entity/Entity;DDDFFZ)Z", at = @At(
  29 + value = "INVOKE",
  30 + target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V"
  31 + ))
  32 + private void onRenderEntity(Render render, Entity entity, double x, double y, double z, float entityYaw, float partialTicks)
  33 + {
  34 + RenderManager source = (RenderManager)(Object)this;
  35 + ClientProxy.onRenderEntity(source, render, entity, x, y, z, entityYaw, partialTicks);
  36 + render.doRender(entity, x, y, z, entityYaw, partialTicks);
  37 + ClientProxy.onPostRenderEntity(source, render, entity, x, y, z, entityYaw, partialTicks);
  38 + }
  39 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinScreenShotHelper.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.io.File;
  4 +
  5 +import org.spongepowered.asm.mixin.Mixin;
  6 +import org.spongepowered.asm.mixin.injection.At;
  7 +import org.spongepowered.asm.mixin.injection.Inject;
  8 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  9 +
  10 +import com.mumfrey.liteloader.client.ClientProxy;
  11 +
  12 +import net.minecraft.client.shader.Framebuffer;
  13 +import net.minecraft.util.IChatComponent;
  14 +import net.minecraft.util.ScreenShotHelper;
  15 +
  16 +@Mixin(ScreenShotHelper.class)
  17 +public abstract class MixinScreenShotHelper
  18 +{
  19 + @Inject(
  20 + method = "saveScreenshot(Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/IChatComponent;",
  21 + at = @At(
  22 + value = "INVOKE",
  23 + target = "Lnet/minecraft/client/renderer/OpenGlHelper;isFramebufferEnabled()Z",
  24 + ordinal = 0
  25 + ),
  26 + cancellable = true
  27 + )
  28 + private static void onSaveScreenshot(File gameDir, String name, int width, int height, Framebuffer fbo, CallbackInfoReturnable<IChatComponent> ci)
  29 + {
  30 + ClientProxy.onSaveScreenshot(ci, gameDir, name, width, height, fbo);
  31 + }
  32 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinSession.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.util.UUID;
  4 +
  5 +import org.spongepowered.asm.mixin.Mixin;
  6 +import org.spongepowered.asm.mixin.Shadow;
  7 +import org.spongepowered.asm.mixin.injection.At;
  8 +import org.spongepowered.asm.mixin.injection.Inject;
  9 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  10 +
  11 +import com.mojang.authlib.GameProfile;
  12 +
  13 +import net.minecraft.entity.player.EntityPlayer;
  14 +import net.minecraft.util.Session;
  15 +
  16 +@Mixin(Session.class)
  17 +public abstract class MixinSession
  18 +{
  19 + @Shadow public abstract String getUsername();
  20 +
  21 + @Inject(method = "getProfile()Lcom/mojang/authlib/GameProfile;", cancellable = true, at = @At(
  22 + value = "NEW",
  23 + args = "class=com/mojang/authlib/GameProfile",
  24 + ordinal = 1
  25 + ))
  26 + private void generateGameProfile(CallbackInfoReturnable<GameProfile> ci)
  27 + {
  28 + UUID uuid = EntityPlayer.getUUID(new GameProfile((UUID)null, this.getUsername()));
  29 + ci.setReturnValue(new GameProfile(uuid, this.getUsername()));
  30 + }
  31 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinSimpleReloadableResourceManager.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.spongepowered.asm.mixin.Mixin;
  6 +import org.spongepowered.asm.mixin.Shadow;
  7 +
  8 +import com.mumfrey.liteloader.client.ducks.IReloadable;
  9 +
  10 +import net.minecraft.client.resources.IResourceManagerReloadListener;
  11 +import net.minecraft.client.resources.SimpleReloadableResourceManager;
  12 +
  13 +@Mixin(SimpleReloadableResourceManager.class)
  14 +public abstract class MixinSimpleReloadableResourceManager implements IReloadable
  15 +{
  16 + @Shadow private List<IResourceManagerReloadListener> reloadListeners;
  17 +
  18 + @Override
  19 + public List<IResourceManagerReloadListener> getReloadListeners()
  20 + {
  21 + return this.reloadListeners;
  22 + }
  23 +}
src/client/java/com/mumfrey/liteloader/client/mixin/MixinTileEntityRendererDispatcher.java 0 → 100644
  1 +package com.mumfrey.liteloader.client.mixin;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import org.spongepowered.asm.mixin.Mixin;
  6 +import org.spongepowered.asm.mixin.Shadow;
  7 +
  8 +import com.mumfrey.liteloader.client.ducks.ITileEntityRendererDispatcher;
  9 +
  10 +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
  11 +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
  12 +import net.minecraft.tileentity.TileEntity;
  13 +
  14 +@Mixin(TileEntityRendererDispatcher.class)
  15 +public abstract class MixinTileEntityRendererDispatcher implements ITileEntityRendererDispatcher
  16 +{
  17 + @Shadow private Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> mapSpecialRenderers;
  18 +
  19 + @Override
  20 + public Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> getSpecialRenderMap()
  21 + {
  22 + return this.mapSpecialRenderers;
  23 + }
  24 +}
src/client/java/com/mumfrey/liteloader/client/transformers/LiteLoaderEventInjectionTransformer.java deleted 100644 → 0
1 -package com.mumfrey.liteloader.client.transformers;  
2 -  
3 -import static com.mumfrey.liteloader.core.runtime.Methods.*;  
4 -import static com.mumfrey.liteloader.transformers.event.InjectionPoint.*;  
5 -  
6 -import com.mumfrey.liteloader.common.transformers.LiteLoaderEventTransformer;  
7 -import com.mumfrey.liteloader.core.runtime.Obf;  
8 -import com.mumfrey.liteloader.transformers.event.Event;  
9 -import com.mumfrey.liteloader.transformers.event.InjectionPoint;  
10 -import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke;  
11 -import com.mumfrey.liteloader.transformers.event.inject.BeforeNew;  
12 -import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn;  
13 -import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke;  
14 -import com.mumfrey.liteloader.transformers.event.inject.MethodHead;  
15 -  
16 -/**  
17 - * Injector for LiteLoader's main events  
18 - *  
19 - * @author Adam Mummery-Smith  
20 - */  
21 -public class LiteLoaderEventInjectionTransformer extends LiteLoaderEventTransformer  
22 -{  
23 - @Override  
24 - protected Obf getProxy()  
25 - {  
26 - return Obf.CallbackProxyClient;  
27 - }  
28 -  
29 - @Override  
30 - protected void addEvents()  
31 - {  
32 - super.addEvents();  
33 -  
34 - // Event declaraions  
35 - Event onOutboundChat = Event.getOrCreate("onOutboundChat", true);  
36 - Event onResize = Event.getOrCreate("updateFramebufferSize", false);  
37 - Event preRenderFBO = Event.getOrCreate("preRenderFBO", false);  
38 - Event renderFBO = Event.getOrCreate("renderFBO", false);  
39 - Event postRenderFBO = Event.getOrCreate("postRenderFBO", false);  
40 - Event onRenderWorld = Event.getOrCreate("onRenderWorld", false);  
41 - Event onRenderSky = Event.getOrCreate("onRenderSky", false);  
42 - Event onRenderClouds = Event.getOrCreate("onRenderClouds", false);  
43 - Event onRenderTerrain = Event.getOrCreate("onRenderTerrain", false);  
44 - Event onTimerUpdate = Event.getOrCreate("onTimerUpdate", false);  
45 - Event onRender = Event.getOrCreate("onRender", false);  
46 - Event newTick = Event.getOrCreate("newTick", false);  
47 - Event onTick = Event.getOrCreate("onTick", false);  
48 - Event preRenderGUI = Event.getOrCreate("preRenderGUI", false);  
49 - Event onRenderHUD = Event.getOrCreate("onRenderHUD", false);  
50 - Event postRenderHUD = Event.getOrCreate("postRenderHUD", false);  
51 - Event onSetupCameraTransform = Event.getOrCreate("onSetupCameraTransform", false);  
52 - Event postRenderEntities = Event.getOrCreate("postRenderEntities", false);  
53 - Event postRender = Event.getOrCreate("postRender", false);  
54 - Event onRenderChat = Event.getOrCreate("onRenderChat", false);  
55 - Event postRenderChat = Event.getOrCreate("postRenderChat", false);  
56 - Event onCreateIntegratedServer = Event.getOrCreate("onCreateIntegratedServer", false);  
57 - Event onStartupComplete = Event.getOrCreate("onStartupComplete", false);  
58 - Event onSessionProfileBad = Event.getOrCreate("onSessionProfileBad", true);  
59 - Event onSaveScreenshot = Event.getOrCreate("onSaveScreenshot", true);  
60 - Event onRenderEntity = Event.getOrCreate("onRenderEntity", false);  
61 - Event onPostRenderEntity = Event.getOrCreate("onPostRenderEntity", false);  
62 - Event onJoinRealm = Event.getOrCreate("onJoinRealm", false);  
63 -  
64 - // Injection Points  
65 - InjectionPoint methodHead = new MethodHead();  
66 - InjectionPoint methodReturn = new BeforeReturn();  
67 - InjectionPoint beforeGlClear = new BeforeInvoke(glClear);  
68 - InjectionPoint beforeFBORender = new BeforeInvoke(framebufferRender);  
69 - InjectionPoint beforeRenderHUD = new BeforeInvoke(renderGameOverlay);  
70 - InjectionPoint beforeBindFBOTex = new BeforeInvoke(bindFramebufferTexture);  
71 - InjectionPoint beforeRender = new BeforeInvoke(updateCameraAndRender);  
72 - InjectionPoint beforeDrawChat = new BeforeInvoke(drawChat);  
73 - InjectionPoint beforeEndProfiler = new BeforeInvoke(endSection);  
74 - InjectionPoint beforeIsFBOEnabled = new BeforeInvoke(isFramebufferEnabled);  
75 - InjectionPoint beforeRenderEntity = new BeforeInvoke(doRender).setCaptureLocals(true);  
76 - InjectionPoint beforeStopRealsmFetcher = new BeforeInvoke(realmsStopFetcher).setCaptureLocals(true);  
77 - InjectionPoint beforeTickProfiler = new BeforeStringInvoke("tick", startSection);  
78 - InjectionPoint beforeCenterProfiler = new BeforeStringInvoke("center", startSection);  
79 - InjectionPoint beforeSkyProfiler = new BeforeStringInvoke("sky", endStartSection);  
80 - InjectionPoint beforeCloudsProfiler = new BeforeStringInvoke("clouds", endStartSection);  
81 - InjectionPoint beforeTerrainProfiler = new BeforeStringInvoke("terrain", endStartSection);  
82 - InjectionPoint beforeRenderProfiler = new BeforeStringInvoke("gameRenderer", endStartSection);  
83 - InjectionPoint beforeFrustumProfiler = new BeforeStringInvoke("frustum", endStartSection);  
84 - InjectionPoint beforeParticlesProfiler = new BeforeStringInvoke("litParticles", endStartSection);  
85 - InjectionPoint beforeNewGameProfile = new BeforeNew(1, Obf.GameProfile);  
86 -  
87 - // Hooks  
88 - this.add(onOutboundChat, sendChatMessage, (methodHead), "onOutboundChat");  
89 - this.add(onResize, updateFramebufferSize, (methodHead), "onResize");  
90 - this.add(preRenderFBO, runGameLoop, (beforeFBORender), "preRenderFBO");  
91 - this.add(renderFBO, framebufferRenderExt, (beforeBindFBOTex), "renderFBO");  
92 - this.add(postRenderFBO, runGameLoop, after(beforeFBORender), "postRenderFBO");  
93 - this.add(onRenderWorld, renderWorld, (beforeCenterProfiler), "onRenderWorld");  
94 - this.add(onRenderSky, renderWorldPass, (beforeSkyProfiler), "onRenderSky");  
95 - this.add(onRenderClouds, renderCloudsCheck, (beforeCloudsProfiler), "onRenderClouds");  
96 - this.add(onRenderTerrain, renderWorldPass, (beforeTerrainProfiler), "onRenderTerrain");  
97 - this.add(onTimerUpdate, runGameLoop, (beforeTickProfiler), "onTimerUpdate");  
98 - this.add(onRender, runGameLoop, (beforeRenderProfiler), "onRender");  
99 - this.add(newTick, runTick, (methodHead), "newTick");  
100 - this.add(onTick, runGameLoop, after(beforeRender), "onTick");  
101 - this.add(preRenderGUI, updateCameraAndRender, after(beforeGlClear), "preRenderGUI");  
102 - this.add(onRenderHUD, updateCameraAndRender, (beforeRenderHUD), "onRenderHUD");  
103 - this.add(postRenderHUD, updateCameraAndRender, after(beforeRenderHUD), "postRenderHUD");  
104 - this.add(onSetupCameraTransform, renderWorldPass, (beforeFrustumProfiler), "onSetupCameraTransform");  
105 - this.add(postRenderEntities, renderWorldPass, (beforeParticlesProfiler), "postRenderEntities");  
106 - this.add(postRender, renderWorld, (beforeEndProfiler), "postRender");  
107 - this.add(onRenderChat, renderGameOverlay, (beforeDrawChat), "onRenderChat");  
108 - this.add(postRenderChat, renderGameOverlay, after(beforeDrawChat), "postRenderChat");  
109 - this.add(onCreateIntegratedServer, integratedServerCtor, (methodReturn), "IntegratedServerCtor");  
110 - this.add(onStartupComplete, startGame, (methodReturn), "onStartupComplete");  
111 - this.add(onSaveScreenshot, saveScreenshot, (beforeIsFBOEnabled), "onSaveScreenshot");  
112 - this.add(onRenderEntity, doRenderEntity, (beforeRenderEntity), "onRenderEntity");  
113 - this.add(onPostRenderEntity, doRenderEntity, after(beforeRenderEntity), "onPostRenderEntity");  
114 -  
115 - // Compatibility handlers  
116 - this.add(onSessionProfileBad, getProfile, (beforeNewGameProfile), "generateOfflineUUID");  
117 -  
118 - // Protocol handlers  
119 - this.add(onJoinRealm, realmsPlay, (beforeStopRealsmFetcher), "onJoinRealm", Obf.PacketEventsClient);  
120 - }  
121 -}  
src/client/java/com/mumfrey/liteloader/client/util/PrivateFieldsClient.java
1 package com.mumfrey.liteloader.client.util; 1 package com.mumfrey.liteloader.client.util;
2 2
3 -import java.util.IdentityHashMap;  
4 -import java.util.List;  
5 import java.util.Map; 3 import java.util.Map;
6 4
7 -import net.minecraft.client.network.NetHandlerLoginClient;  
8 -import net.minecraft.client.renderer.entity.RenderManager;  
9 -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;  
10 -import net.minecraft.client.resources.IResourceManagerReloadListener;  
11 -import net.minecraft.client.resources.SimpleReloadableResourceManager;  
12 -import net.minecraft.network.NetworkManager;  
13 -import net.minecraft.network.play.server.S02PacketChat;  
14 -import net.minecraft.tileentity.TileEntity;  
15 -import net.minecraft.util.IChatComponent;  
16 -import net.minecraft.util.ObjectIntIdentityMap;  
17 -import net.minecraft.util.RegistryNamespaced;  
18 -import net.minecraft.util.RegistrySimple;  
19 -  
20 import com.mumfrey.liteloader.core.runtime.Obf; 5 import com.mumfrey.liteloader.core.runtime.Obf;
21 import com.mumfrey.liteloader.util.PrivateFields; 6 import com.mumfrey.liteloader.util.PrivateFields;
22 7
  8 +import net.minecraft.tileentity.TileEntity;
  9 +
23 @SuppressWarnings("rawtypes") 10 @SuppressWarnings("rawtypes")
24 public final class PrivateFieldsClient<P, T> extends PrivateFields<P, T> 11 public final class PrivateFieldsClient<P, T> extends PrivateFields<P, T>
25 { 12 {
@@ -30,17 +17,6 @@ public final class PrivateFieldsClient&lt;P, T&gt; extends PrivateFields&lt;P, T&gt; @@ -30,17 +17,6 @@ public final class PrivateFieldsClient&lt;P, T&gt; extends PrivateFields&lt;P, T&gt;
30 17
31 // CHECKSTYLE:OFF 18 // CHECKSTYLE:OFF
32 19
33 - public static final PrivateFieldsClient<RenderManager, Map> entityRenderMap = new PrivateFieldsClient<RenderManager, Map> (RenderManager.class, Obf.entityRenderMap);  
34 - public static final PrivateFieldsClient<NetHandlerLoginClient, NetworkManager> netManager = new PrivateFieldsClient<NetHandlerLoginClient, NetworkManager> (NetHandlerLoginClient.class, Obf.networkManager);  
35 - public static final PrivateFieldsClient<RegistrySimple, Map> registryObjects = new PrivateFieldsClient<RegistrySimple, Map> (RegistrySimple.class, Obf.registryObjects);  
36 - public static final PrivateFieldsClient<RegistryNamespaced, ObjectIntIdentityMap> underlyingIntegerMap = new PrivateFieldsClient<RegistryNamespaced, ObjectIntIdentityMap>(RegistryNamespaced.class, Obf.underlyingIntegerMap);  
37 - public static final PrivateFieldsClient<ObjectIntIdentityMap, IdentityHashMap> identityMap = new PrivateFieldsClient<ObjectIntIdentityMap, IdentityHashMap> (ObjectIntIdentityMap.class, Obf.identityMap);  
38 - public static final PrivateFieldsClient<ObjectIntIdentityMap, List> objectList = new PrivateFieldsClient<ObjectIntIdentityMap, List> (ObjectIntIdentityMap.class, Obf.objectList);  
39 - public static final PrivateFieldsClient<TileEntityRendererDispatcher, Map> specialRendererMap = new PrivateFieldsClient<TileEntityRendererDispatcher, Map> (TileEntityRendererDispatcher.class, Obf.mapSpecialRenderers);  
40 - public static final PrivateFieldsClient<TileEntity, Map> tileEntityNameToClassMap = new PrivateFieldsClient<TileEntity, Map> (TileEntity.class, Obf.tileEntityNameToClassMap);  
41 - public static final PrivateFieldsClient<TileEntity, Map> tileEntityClassToNameMap = new PrivateFieldsClient<TileEntity, Map> (TileEntity.class, Obf.tileEntityClassToNameMap);  
42 - public static final PrivateFieldsClient<S02PacketChat, IChatComponent> chatMessage = new PrivateFieldsClient<S02PacketChat, IChatComponent> (S02PacketChat.class, Obf.chatComponent);  
43 -  
44 - public static final PrivateFieldsClient<SimpleReloadableResourceManager, List<IResourceManagerReloadListener>> reloadListeners =  
45 - new PrivateFieldsClient<SimpleReloadableResourceManager, List<IResourceManagerReloadListener>>(SimpleReloadableResourceManager.class, Obf.reloadListeners); 20 + public static final PrivateFieldsClient<TileEntity, Map> tileEntityNameToClassMap = new PrivateFieldsClient<TileEntity, Map>(TileEntity.class, Obf.tileEntityNameToClassMap);
  21 + public static final PrivateFieldsClient<TileEntity, Map> tileEntityClassToNameMap = new PrivateFieldsClient<TileEntity, Map>(TileEntity.class, Obf.tileEntityClassToNameMap);
46 } 22 }
47 \ No newline at end of file 23 \ No newline at end of file
src/client/java/com/mumfrey/liteloader/util/ModUtilities.java
@@ -6,6 +6,15 @@ import java.util.IdentityHashMap; @@ -6,6 +6,15 @@ import java.util.IdentityHashMap;
6 import java.util.List; 6 import java.util.List;
7 import java.util.Map; 7 import java.util.Map;
8 8
  9 +import org.lwjgl.LWJGLException;
  10 +import org.lwjgl.opengl.Display;
  11 +import org.lwjgl.opengl.DisplayMode;
  12 +
  13 +import com.mumfrey.liteloader.client.ducks.*;
  14 +import com.mumfrey.liteloader.client.overlays.IMinecraft;
  15 +import com.mumfrey.liteloader.client.util.PrivateFieldsClient;
  16 +import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
  17 +
9 import net.minecraft.block.Block; 18 import net.minecraft.block.Block;
10 import net.minecraft.client.Minecraft; 19 import net.minecraft.client.Minecraft;
11 import net.minecraft.client.renderer.entity.Render; 20 import net.minecraft.client.renderer.entity.Render;
@@ -17,20 +26,9 @@ import net.minecraft.init.Blocks; @@ -17,20 +26,9 @@ import net.minecraft.init.Blocks;
17 import net.minecraft.init.Items; 26 import net.minecraft.init.Items;
18 import net.minecraft.item.Item; 27 import net.minecraft.item.Item;
19 import net.minecraft.tileentity.TileEntity; 28 import net.minecraft.tileentity.TileEntity;
20 -import net.minecraft.util.ObjectIntIdentityMap;  
21 -import net.minecraft.util.RegistryNamespaced;  
22 import net.minecraft.util.RegistrySimple; 29 import net.minecraft.util.RegistrySimple;
23 import net.minecraft.util.ResourceLocation; 30 import net.minecraft.util.ResourceLocation;
24 31
25 -import org.lwjgl.LWJGLException;  
26 -import org.lwjgl.opengl.Display;  
27 -import org.lwjgl.opengl.DisplayMode;  
28 -  
29 -import com.mumfrey.liteloader.client.overlays.IMinecraft;  
30 -import com.mumfrey.liteloader.client.util.PrivateFieldsClient;  
31 -import com.mumfrey.liteloader.core.runtime.Obf;  
32 -import com.mumfrey.liteloader.util.log.LiteLoaderLogger;  
33 -  
34 /** 32 /**
35 * A small collection of useful functions for mods 33 * A small collection of useful functions for mods
36 * 34 *
@@ -67,12 +65,11 @@ public abstract class ModUtilities @@ -67,12 +65,11 @@ public abstract class ModUtilities
67 * @param entityClass 65 * @param entityClass
68 * @param renderer 66 * @param renderer
69 */ 67 */
70 - @SuppressWarnings("unchecked")  
71 public static void addRenderer(Class<? extends Entity> entityClass, Render renderer) 68 public static void addRenderer(Class<? extends Entity> entityClass, Render renderer)
72 { 69 {
73 RenderManager renderManager = Minecraft.getMinecraft().getRenderManager(); 70 RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
74 71
75 - Map<Class<? extends Entity>, Render> entityRenderMap = PrivateFieldsClient.entityRenderMap.get(renderManager); 72 + Map<Class<? extends Entity>, Render> entityRenderMap = ((IRenderManager)renderManager).getRenderMap();
76 if (entityRenderMap != null) 73 if (entityRenderMap != null)
77 { 74 {
78 entityRenderMap.put(entityClass, renderer); 75 entityRenderMap.put(entityClass, renderer);
@@ -84,7 +81,6 @@ public abstract class ModUtilities @@ -84,7 +81,6 @@ public abstract class ModUtilities
84 } 81 }
85 } 82 }
86 83
87 - @SuppressWarnings("unchecked")  
88 public static void addRenderer(Class<? extends TileEntity> tileEntityClass, TileEntitySpecialRenderer renderer) 84 public static void addRenderer(Class<? extends TileEntity> tileEntityClass, TileEntitySpecialRenderer renderer)
89 { 85 {
90 TileEntityRendererDispatcher tileEntityRenderer = TileEntityRendererDispatcher.instance; 86 TileEntityRendererDispatcher tileEntityRenderer = TileEntityRendererDispatcher.instance;
@@ -92,7 +88,7 @@ public abstract class ModUtilities @@ -92,7 +88,7 @@ public abstract class ModUtilities
92 try 88 try
93 { 89 {
94 Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> specialRendererMap 90 Map<Class<? extends TileEntity>, TileEntitySpecialRenderer> specialRendererMap
95 - = PrivateFieldsClient.specialRendererMap.get(tileEntityRenderer); 91 + = ((ITileEntityRendererDispatcher)tileEntityRenderer).getSpecialRenderMap();
96 specialRendererMap.put(tileEntityClass, renderer); 92 specialRendererMap.put(tileEntityClass, renderer);
97 renderer.setRendererDispatcher(tileEntityRenderer); 93 renderer.setRendererDispatcher(tileEntityRenderer);
98 } 94 }
@@ -203,7 +199,6 @@ public abstract class ModUtilities @@ -203,7 +199,6 @@ public abstract class ModUtilities
203 { 199 {
204 Map<String, Class<? extends TileEntity>> nameToClassMap = PrivateFieldsClient.tileEntityNameToClassMap.get(null); 200 Map<String, Class<? extends TileEntity>> nameToClassMap = PrivateFieldsClient.tileEntityNameToClassMap.get(null);
205 Map<Class<? extends TileEntity>, String> classToNameMap = PrivateFieldsClient.tileEntityClassToNameMap.get(null); 201 Map<Class<? extends TileEntity>, String> classToNameMap = PrivateFieldsClient.tileEntityClassToNameMap.get(null);
206 -  
207 nameToClassMap.put(entityName, tileEntityClass); 202 nameToClassMap.put(entityName, tileEntityClass);
208 classToNameMap.put(tileEntityClass, entityName); 203 classToNameMap.put(tileEntityClass, entityName);
209 } 204 }
@@ -213,47 +208,18 @@ public abstract class ModUtilities @@ -213,47 +208,18 @@ public abstract class ModUtilities
213 } 208 }
214 } 209 }
215 210
216 - /**  
217 - * Abstraction helper function  
218 - *  
219 - * @param fieldName Name of field to get, returned unmodified if in debug  
220 - * mode  
221 - * @return Obfuscated field name if present  
222 - * @deprecated use ObfuscationUtilities.getObfuscatedFieldName instead  
223 - */  
224 - @Deprecated  
225 - public static String getObfuscatedFieldName(String fieldName, String obfuscatedFieldName, String seargeFieldName)  
226 - {  
227 - return ObfuscationUtilities.getObfuscatedFieldName(fieldName, obfuscatedFieldName, seargeFieldName);  
228 - }  
229 -  
230 - /**  
231 - * Abstraction helper function  
232 - *  
233 - * @param obf Field to get, returned unmodified if in debug mode  
234 - * @return Obfuscated field name if present  
235 - * @deprecated use ObfuscationUtilities.getObfuscatedFieldName instead  
236 - */  
237 - @Deprecated  
238 - public static String getObfuscatedFieldName(Obf obf)  
239 - {  
240 - return ObfuscationUtilities.getObfuscatedFieldName(obf);  
241 - }  
242 -  
243 - @SuppressWarnings("unchecked")  
244 private static <K, V> V removeObjectFromRegistry(RegistrySimple registry, K key) 211 private static <K, V> V removeObjectFromRegistry(RegistrySimple registry, K key)
245 { 212 {
246 if (registry == null) return null; 213 if (registry == null) return null;
247 214
248 - ObjectIntIdentityMap underlyingIntegerMap = null; 215 + IObjectIntIdentityMap underlyingIntegerMap = null;
249 216
250 - if (registry instanceof RegistryNamespaced) 217 + if (registry instanceof INamespacedRegistry)
251 { 218 {
252 - RegistryNamespaced rns = (RegistryNamespaced)registry;  
253 - underlyingIntegerMap = PrivateFieldsClient.underlyingIntegerMap.get(rns); 219 + underlyingIntegerMap = ((INamespacedRegistry)registry).getUnderlyingMap();
254 } 220 }
255 221
256 - Map<K, V> registryObjects = PrivateFieldsClient.registryObjects.get(registry); 222 + Map<K, V> registryObjects = ((IRegistrySimple)registry).<K, V>getRegistryObjects();
257 if (registryObjects != null) 223 if (registryObjects != null)
258 { 224 {
259 V existingValue = registryObjects.get(key); 225 V existingValue = registryObjects.get(key);
@@ -263,8 +229,8 @@ public abstract class ModUtilities @@ -263,8 +229,8 @@ public abstract class ModUtilities
263 229
264 if (underlyingIntegerMap != null) 230 if (underlyingIntegerMap != null)
265 { 231 {
266 - IdentityHashMap<V, Integer> identityMap = PrivateFieldsClient.identityMap.get(underlyingIntegerMap);  
267 - List<V> objectList = PrivateFieldsClient.objectList.get(underlyingIntegerMap); 232 + IdentityHashMap<V, Integer> identityMap = underlyingIntegerMap.<V>getIdentityMap();
  233 + List<V> objectList = underlyingIntegerMap.<V>getObjectList();
268 if (identityMap != null) identityMap.remove(existingValue); 234 if (identityMap != null) identityMap.remove(existingValue);
269 if (objectList != null) objectList.remove(existingValue); 235 if (objectList != null) objectList.remove(existingValue);
270 } 236 }
src/client/resources/mixins.liteloader.client.json 0 → 100644
  1 +{
  2 + "required": true,
  3 + "minVersion": "0.4.10",
  4 + "package": "com.mumfrey.liteloader.client.mixin",
  5 + "refmap": "mixins.liteloader.client.refmap.json",
  6 + "mixins": [
  7 + "MixinMinecraft",
  8 + "MixinSession",
  9 + "MixinEntityRenderer",
  10 + "MixinRenderManager",
  11 + "MixinGuiIngame",
  12 + "MixinEntityPlayerSP",
  13 + "MixinFramebuffer",
  14 + "MixinIntegratedServer",
  15 + "MixinScreenShotHelper",
  16 + "MixinRealmsMainScreen",
  17 + "MixinNetHandlerLoginClient",
  18 + "MixinRegistrySimple",
  19 + "MixinRegistryNamespaced",
  20 + "MixinTileEntityRendererDispatcher",
  21 + "MixinSimpleReloadableResourceManager"
  22 + ]
  23 +}
0 \ No newline at end of file 24 \ No newline at end of file
src/main/java/com/mumfrey/liteloader/api/LiteAPI.java
@@ -53,7 +53,13 @@ public interface LiteAPI @@ -53,7 +53,13 @@ public interface LiteAPI
53 * dependency using the api@revision syntax. 53 * dependency using the api@revision syntax.
54 */ 54 */
55 public abstract int getRevision(); 55 public abstract int getRevision();
56 - 56 +
  57 + /**
  58 + * Get mixin environment configuration provider for this API, can return
  59 + * null.
  60 + */
  61 + public abstract MixinConfigProvider getMixins();
  62 +
57 /** 63 /**
58 * Should return an array of required transformer names, these transformers 64 * Should return an array of required transformer names, these transformers
59 * will be injected UPSTREAM. Can return null. 65 * will be injected UPSTREAM. Can return null.
src/main/java/com/mumfrey/liteloader/api/MixinConfigProvider.java 0 → 100644
  1 +package com.mumfrey.liteloader.api;
  2 +
  3 +import org.spongepowered.asm.mixin.MixinEnvironment.CompatibilityLevel;
  4 +
  5 +/**
  6 + * Container for all of an API's mixin environment configuration
  7 + */
  8 +public interface MixinConfigProvider
  9 +{
  10 + /**
  11 + * Get the minimum required mixin operating compatibility level for this
  12 + * API, can return null.
  13 + */
  14 + public abstract CompatibilityLevel getCompatibilityLevel();
  15 +
  16 + /**
  17 + * Get mixin configuration files for this API, all returned configs will be
  18 + * added to the DEFAULT environment. Can return null.
  19 + */
  20 + public abstract String[] getMixinConfigs();
  21 +
  22 + /**
  23 + * Get mixin error handler classes to register for this API. Can return
  24 + * null.
  25 + */
  26 + public abstract String[] getErrorHandlers();
  27 +}
src/main/java/com/mumfrey/liteloader/api/manager/APIAdapter.java
@@ -16,6 +16,12 @@ import com.mumfrey.liteloader.interfaces.InterfaceRegistry; @@ -16,6 +16,12 @@ import com.mumfrey.liteloader.interfaces.InterfaceRegistry;
16 public interface APIAdapter 16 public interface APIAdapter
17 { 17 {
18 /** 18 /**
  19 + * APIs should register their mixin configs and set up the mixin environment
  20 + * here.
  21 + */
  22 + public abstract void initMixins();
  23 +
  24 + /**
19 * Aggregate and return required transformers from all registered APIs 25 * Aggregate and return required transformers from all registered APIs
20 */ 26 */
21 public abstract List<String> getRequiredTransformers(); 27 public abstract List<String> getRequiredTransformers();
src/main/java/com/mumfrey/liteloader/api/manager/APIProviderBasic.java
@@ -8,8 +8,12 @@ import java.util.List; @@ -8,8 +8,12 @@ import java.util.List;
8 import java.util.Map; 8 import java.util.Map;
9 import java.util.regex.Matcher; 9 import java.util.regex.Matcher;
10 10
  11 +import org.spongepowered.asm.mixin.MixinEnvironment;
  12 +import org.spongepowered.asm.mixin.MixinEnvironment.CompatibilityLevel;
  13 +
11 import com.mumfrey.liteloader.api.CoreProvider; 14 import com.mumfrey.liteloader.api.CoreProvider;
12 import com.mumfrey.liteloader.api.LiteAPI; 15 import com.mumfrey.liteloader.api.LiteAPI;
  16 +import com.mumfrey.liteloader.api.MixinConfigProvider;
13 import com.mumfrey.liteloader.api.Observer; 17 import com.mumfrey.liteloader.api.Observer;
14 import com.mumfrey.liteloader.interfaces.InterfaceRegistry; 18 import com.mumfrey.liteloader.interfaces.InterfaceRegistry;
15 19
@@ -54,6 +58,44 @@ class APIProviderBasic implements APIProvider, APIAdapter @@ -54,6 +58,44 @@ class APIProviderBasic implements APIProvider, APIAdapter
54 this.apiMap.put(api.getIdentifier(), api); 58 this.apiMap.put(api.getIdentifier(), api);
55 } 59 }
56 } 60 }
  61 +
  62 + /* (non-Javadoc)
  63 + * @see com.mumfrey.liteloader.api.manager.APIAdapter#initMixins()
  64 + */
  65 + @Override
  66 + public void initMixins()
  67 + {
  68 + for (LiteAPI api : this.apis)
  69 + {
  70 + MixinConfigProvider mixins = api.getMixins();
  71 + if (mixins != null)
  72 + {
  73 + CompatibilityLevel level = mixins.getCompatibilityLevel();
  74 + if (level != null)
  75 + {
  76 + MixinEnvironment.setCompatibilityLevel(level);
  77 + }
  78 +
  79 + String[] configs = mixins.getMixinConfigs();
  80 + if (configs != null)
  81 + {
  82 + for (String config : configs)
  83 + {
  84 + MixinEnvironment.getDefaultEnvironment().addConfiguration(config);
  85 + }
  86 + }
  87 +
  88 + String[] errorHandlers = mixins.getErrorHandlers();
  89 + if (errorHandlers != null)
  90 + {
  91 + for (String handlerName : errorHandlers)
  92 + {
  93 + MixinEnvironment.getDefaultEnvironment().registerErrorHandlerClass(handlerName);
  94 + }
  95 + }
  96 + }
  97 + }
  98 + }
57 99
58 /* (non-Javadoc) 100 /* (non-Javadoc)
59 * @see com.mumfrey.liteloader.api.manager.APIProvider 101 * @see com.mumfrey.liteloader.api.manager.APIProvider
src/main/java/com/mumfrey/liteloader/common/ducks/IChatPacket.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.ducks;
  2 +
  3 +import net.minecraft.util.IChatComponent;
  4 +
  5 +public interface IChatPacket
  6 +{
  7 + public abstract IChatComponent getChatComponent();
  8 +
  9 + public abstract void setChatComponent(IChatComponent chatComponent);
  10 +}
src/main/java/com/mumfrey/liteloader/common/ducks/IPacketClientSettings.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.ducks;
  2 +
  3 +public interface IPacketClientSettings
  4 +{
  5 + public abstract int getViewDistance();
  6 +}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinC15PacketClientSettings.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.Shadow;
  5 +
  6 +import com.mumfrey.liteloader.common.ducks.IPacketClientSettings;
  7 +
  8 +import net.minecraft.network.play.client.C15PacketClientSettings;
  9 +
  10 +@Mixin(C15PacketClientSettings.class)
  11 +public abstract class MixinC15PacketClientSettings implements IPacketClientSettings
  12 +{
  13 + @Shadow private int view;
  14 +
  15 + @Override
  16 + public int getViewDistance()
  17 + {
  18 + return this.view;
  19 + }
  20 +}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinItemInWorldManager.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  7 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  8 +
  9 +import com.mumfrey.liteloader.core.Proxy;
  10 +
  11 +import net.minecraft.entity.player.EntityPlayer;
  12 +import net.minecraft.item.ItemStack;
  13 +import net.minecraft.server.management.ItemInWorldManager;
  14 +import net.minecraft.util.BlockPos;
  15 +import net.minecraft.util.EnumFacing;
  16 +import net.minecraft.world.World;
  17 +
  18 +@Mixin(ItemInWorldManager.class)
  19 +public abstract class MixinItemInWorldManager
  20 +{
  21 + @Inject(
  22 + method = "onBlockClicked(Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V",
  23 + cancellable = true,
  24 + at = @At("HEAD")
  25 + )
  26 + private void onBlockClicked(BlockPos pos, EnumFacing side, CallbackInfo ci)
  27 + {
  28 + Proxy.onBlockClicked(ci, (ItemInWorldManager)(Object)this, pos, side);
  29 + }
  30 +
  31 + @Inject(
  32 + method = "activateBlockOrUseItem(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;"
  33 + + "Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z",
  34 + cancellable = true,
  35 + at = @At("HEAD")
  36 + )
  37 + private void onUseItem(EntityPlayer player, World worldIn, ItemStack stack, BlockPos pos, EnumFacing side, float offsetX, float offsetY,
  38 + float offsetZ, CallbackInfoReturnable<Boolean> cir)
  39 + {
  40 + Proxy.onUseItem(cir, player, worldIn, stack, pos, side, offsetX, offsetY, offsetZ);
  41 + }
  42 +}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinMinecraftServer.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  7 +
  8 +import com.mumfrey.liteloader.core.Proxy;
  9 +
  10 +import net.minecraft.server.MinecraftServer;
  11 +
  12 +@Mixin(MinecraftServer.class)
  13 +public abstract class MixinMinecraftServer
  14 +{
  15 + @Inject(method = "updateTimeLightAndEntities()V", at = @At("HEAD"))
  16 + private void onServerTick(CallbackInfo ci)
  17 + {
  18 + Proxy.onServerTick((MinecraftServer)(Object)this);
  19 + }
  20 +}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinNetHandlerPlayServer.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.objectweb.asm.Opcodes;
  4 +import org.spongepowered.asm.mixin.Mixin;
  5 +import org.spongepowered.asm.mixin.injection.At;
  6 +import org.spongepowered.asm.mixin.injection.At.Shift;
  7 +import org.spongepowered.asm.mixin.injection.Inject;
  8 +import org.spongepowered.asm.mixin.injection.Surrogate;
  9 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  10 +import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
  11 +
  12 +import com.mumfrey.liteloader.core.Proxy;
  13 +
  14 +import net.minecraft.network.NetHandlerPlayServer;
  15 +import net.minecraft.network.play.client.C03PacketPlayer;
  16 +import net.minecraft.network.play.client.C07PacketPlayerDigging;
  17 +import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement;
  18 +import net.minecraft.network.play.client.C0APacketAnimation;
  19 +import net.minecraft.world.WorldServer;
  20 +
  21 +@Mixin(NetHandlerPlayServer.class)
  22 +public abstract class MixinNetHandlerPlayServer
  23 +{
  24 + @Inject(
  25 + method = "processPlayerBlockPlacement(Lnet/minecraft/network/play/client/C08PacketPlayerBlockPlacement;)V",
  26 + cancellable = true,
  27 + at = @At(
  28 + value = "INVOKE",
  29 + shift = Shift.AFTER,
  30 + target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue"
  31 + + "(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V"
  32 + )
  33 + )
  34 + private void onPlaceBlock(C08PacketPlayerBlockPlacement packetIn, CallbackInfo ci)
  35 + {
  36 + Proxy.onPlaceBlock(ci, (NetHandlerPlayServer)(Object)this, packetIn);
  37 + }
  38 +
  39 + @Inject(
  40 + method = "handleAnimation(Lnet/minecraft/network/play/client/C0APacketAnimation;)V",
  41 + cancellable = true,
  42 + at = @At(
  43 + value = "INVOKE",
  44 + shift = Shift.AFTER,
  45 + target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue"
  46 + + "(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V"
  47 + )
  48 + )
  49 + private void onClickedAir(C0APacketAnimation packetIn, CallbackInfo ci)
  50 + {
  51 + Proxy.onClickedAir(ci, (NetHandlerPlayServer)(Object)this, packetIn);
  52 + }
  53 +
  54 + @Inject(
  55 + method = "processPlayerDigging(Lnet/minecraft/network/play/client/C07PacketPlayerDigging;)V",
  56 + cancellable = true,
  57 + at = @At(
  58 + value = "INVOKE",
  59 + shift = Shift.AFTER,
  60 + target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue"
  61 + + "(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V"
  62 + )
  63 + )
  64 + private void onPlayerDigging(C07PacketPlayerDigging packetIn, CallbackInfo ci)
  65 + {
  66 + Proxy.onPlayerDigging(ci, (NetHandlerPlayServer)(Object)this, packetIn);
  67 + }
  68 +
  69 + @Inject(
  70 + method = "processPlayer(Lnet/minecraft/network/play/client/C03PacketPlayer;)V",
  71 + cancellable = true,
  72 + locals = LocalCapture.CAPTURE_FAILHARD,
  73 + at = @At(
  74 + value = "FIELD",
  75 + opcode = Opcodes.GETFIELD,
  76 + target = "Lnet/minecraft/entity/player/EntityPlayerMP;posY:D",
  77 + ordinal = 4
  78 + )
  79 + )
  80 + private void onPlayerMoved(C03PacketPlayer packetIn, CallbackInfo ci, WorldServer world, double oldPosX, double oldPosY, double oldPosZ,
  81 + double deltaMoveSq, double deltaX, double deltaY, double deltaZ)
  82 + {
  83 + Proxy.onPlayerMoved(ci, (NetHandlerPlayServer)(Object)this, packetIn, world, oldPosX, oldPosY, oldPosZ, deltaMoveSq, deltaX, deltaY, deltaZ);
  84 + }
  85 +
  86 + @Surrogate
  87 + private void onPlayerMoved(C03PacketPlayer packetIn, CallbackInfo ci, WorldServer world, double oldPosX, double oldPosY, double oldPosZ)
  88 + {
  89 + Proxy.onPlayerMoved(ci, (NetHandlerPlayServer)(Object)this, packetIn, world, oldPosX, oldPosY, oldPosZ);
  90 + }
  91 +}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinS02PacketChat.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.Shadow;
  5 +
  6 +import com.mumfrey.liteloader.common.ducks.IChatPacket;
  7 +
  8 +import net.minecraft.network.play.server.S02PacketChat;
  9 +import net.minecraft.util.IChatComponent;
  10 +
  11 +@Mixin(S02PacketChat.class)
  12 +public abstract class MixinS02PacketChat implements IChatPacket
  13 +{
  14 + @Shadow private IChatComponent chatComponent;
  15 +
  16 + @Override
  17 + public IChatComponent getChatComponent()
  18 + {
  19 + return this.chatComponent;
  20 + }
  21 +
  22 + @Override
  23 + public void setChatComponent(IChatComponent chatComponent)
  24 + {
  25 + this.chatComponent = chatComponent;
  26 + }
  27 +}
src/main/java/com/mumfrey/liteloader/common/mixin/MixinServerConfigurationManager.java 0 → 100644
  1 +package com.mumfrey.liteloader.common.mixin;
  2 +
  3 +import org.spongepowered.asm.mixin.Mixin;
  4 +import org.spongepowered.asm.mixin.injection.At;
  5 +import org.spongepowered.asm.mixin.injection.Inject;
  6 +import org.spongepowered.asm.mixin.injection.Surrogate;
  7 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  8 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  9 +
  10 +import com.mojang.authlib.GameProfile;
  11 +import com.mumfrey.liteloader.core.Proxy;
  12 +
  13 +import net.minecraft.entity.player.EntityPlayerMP;
  14 +import net.minecraft.network.NetHandlerPlayServer;
  15 +import net.minecraft.network.NetworkManager;
  16 +import net.minecraft.server.management.ServerConfigurationManager;
  17 +
  18 +@Mixin(ServerConfigurationManager.class)
  19 +public abstract class MixinServerConfigurationManager
  20 +{
  21 + @Inject(
  22 + method = "initializeConnectionToPlayer(Lnet/minecraft/network/NetworkManager;Lnet/minecraft/entity/player/EntityPlayerMP;)V",
  23 + at = @At("RETURN")
  24 + )
  25 + private void onInitializePlayerConnection(NetworkManager netManager, EntityPlayerMP player, CallbackInfo ci)
  26 + {
  27 + Proxy.onInitializePlayerConnection((ServerConfigurationManager)(Object)this, netManager, player);
  28 + }
  29 +
  30 + // Because, forge
  31 + @Surrogate
  32 + private void onInitializePlayerConnection(NetworkManager netManager, EntityPlayerMP player, NetHandlerPlayServer nhps, CallbackInfo ci)
  33 + {
  34 + Proxy.onInitializePlayerConnection((ServerConfigurationManager)(Object)this, netManager, player);
  35 + }
  36 +
  37 + @Inject(method = "playerLoggedIn(Lnet/minecraft/entity/player/EntityPlayerMP;)V", at = @At("RETURN"))
  38 + private void onPlayerLogin(EntityPlayerMP player, CallbackInfo ci)
  39 + {
  40 + Proxy.onPlayerLogin((ServerConfigurationManager)(Object)this, player);
  41 + }
  42 +
  43 + @Inject(method = "playerLoggedOut(Lnet/minecraft/entity/player/EntityPlayerMP;)V", at = @At("RETURN"))
  44 + private void onPlayerLogout(EntityPlayerMP player, CallbackInfo ci)
  45 + {
  46 + Proxy.onPlayerLogout((ServerConfigurationManager)(Object)this, player);
  47 + }
  48 +
  49 + @Inject(
  50 + method = "createPlayerForUser(Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/entity/player/EntityPlayerMP;",
  51 + cancellable = true,
  52 + at = @At("RETURN")
  53 + )
  54 + private void onSpawnPlayer(GameProfile profile, CallbackInfoReturnable<EntityPlayerMP> cir)
  55 + {
  56 + Proxy.onSpawnPlayer(cir, (ServerConfigurationManager)(Object)this, profile);
  57 + }
  58 +
  59 + @Inject(
  60 + method = "recreatePlayerEntity(Lnet/minecraft/entity/player/EntityPlayerMP;IZ)Lnet/minecraft/entity/player/EntityPlayerMP;",
  61 + cancellable = true,
  62 + at = @At("RETURN")
  63 + )
  64 + private void onRespawnPlayer(EntityPlayerMP player, int dimension, boolean conqueredEnd, CallbackInfoReturnable<EntityPlayerMP> cir)
  65 + {
  66 + Proxy.onRespawnPlayer(cir, (ServerConfigurationManager)(Object)this, player, dimension, conqueredEnd);
  67 + }
  68 +}
src/main/java/com/mumfrey/liteloader/common/transformers/LiteLoaderEventTransformer.java deleted 100644 → 0
1 -package com.mumfrey.liteloader.common.transformers;  
2 -  
3 -import static com.mumfrey.liteloader.core.runtime.Methods.*;  
4 -import static com.mumfrey.liteloader.transformers.event.InjectionPoint.*;  
5 -  
6 -import org.objectweb.asm.Opcodes;  
7 -  
8 -import com.mumfrey.liteloader.core.runtime.Obf;  
9 -import com.mumfrey.liteloader.transformers.event.Event;  
10 -import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer;  
11 -import com.mumfrey.liteloader.transformers.event.InjectionPoint;  
12 -import com.mumfrey.liteloader.transformers.event.MethodInfo;  
13 -import com.mumfrey.liteloader.transformers.event.inject.BeforeFieldAccess;  
14 -import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke;  
15 -import com.mumfrey.liteloader.transformers.event.inject.BeforeNew;  
16 -import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn;  
17 -import com.mumfrey.liteloader.transformers.event.inject.MethodHead;  
18 -  
19 -/**  
20 - * Injector for LiteLoader's common events  
21 - *  
22 - * @author Adam Mummery-Smith  
23 - */  
24 -public abstract class LiteLoaderEventTransformer extends EventInjectionTransformer  
25 -{  
26 - protected abstract Obf getProxy();  
27 -  
28 - @Override  
29 - protected void addEvents()  
30 - {  
31 - // Event declarations  
32 - Event onInitializePlayerConnection = Event.getOrCreate("onInitializePlayerConnection", false);  
33 - Event onPlayerLogin = Event.getOrCreate("onPlayerLogin", false);  
34 - Event onPlayerLogout = Event.getOrCreate("onPlayerLogout", false);  
35 - Event onSpawnPlayer = Event.getOrCreate("onSpawnPlayer", false);  
36 - Event onRespawnPlayer = Event.getOrCreate("onRespawnPlayer", false);  
37 - Event onServerTick = Event.getOrCreate("onServerTick", false);  
38 - Event onBlockClickedEvent = Event.getOrCreate("onBlockClicked", true);  
39 - Event onActivateBlockOrUseItem = Event.getOrCreate("onActivateBlockOrUseItem", true);  
40 - Event onPlayerDigging = Event.getOrCreate("onPlayerDigging", true);  
41 - Event onPlaceBlock = Event.getOrCreate("onPlaceBlock", true);  
42 - Event onClickedAir = Event.getOrCreate("onClickedAir", true);  
43 - Event onSessionProfileBad = Event.getOrCreate("onSessionProfileBad", true);  
44 - Event onPlayerMoved = Event.getOrCreate("onPlayerMoved", true);  
45 -  
46 - // Injection Points  
47 - InjectionPoint methodHead = new MethodHead();  
48 - InjectionPoint methodReturn = new BeforeReturn();  
49 - InjectionPoint beforeNewGameProfile = new BeforeNew(1, Obf.GameProfile);  
50 - InjectionPoint beforeThreadMarshall = new BeforeInvoke(checkThreadAndEnqueue);  
51 - InjectionPoint beforeGetPosY = new BeforeFieldAccess(Opcodes.GETFIELD, Obf.entityPosY, Obf.EntityPlayerMP, 4).setCaptureLocals(true);  
52 -  
53 - // Hooks  
54 - this.add(onInitializePlayerConnection, initPlayerConnection, (methodReturn), "onInitializePlayerConnection");  
55 - this.add(onPlayerLogin, playerLoggedIn, (methodReturn), "onPlayerLogin");  
56 - this.add(onPlayerLogout, playerLoggedOut, (methodReturn), "onPlayerLogout");  
57 - this.add(onSpawnPlayer, spawnPlayer, (methodReturn), "onSpawnPlayer");  
58 - this.add(onRespawnPlayer, respawnPlayer, (methodReturn), "onRespawnPlayer");  
59 - this.add(onServerTick, serverJobs, (methodHead), "onServerTick");  
60 - this.add(onBlockClickedEvent, onBlockClicked, (methodHead), "onBlockClicked");  
61 - this.add(onActivateBlockOrUseItem, activateBlockOrUseItem, (methodHead), "onUseItem");  
62 - this.add(onPlaceBlock, processBlockPlacement, after(beforeThreadMarshall) , "onPlaceBlock");  
63 - this.add(onClickedAir, handleAnimation, after(beforeThreadMarshall), "onClickedAir");  
64 - this.add(onPlayerDigging, processPlayerDigging, after(beforeThreadMarshall), "onPlayerDigging");  
65 - this.add(onPlayerMoved, processPlayer, (beforeGetPosY), "onPlayerMoved");  
66 -  
67 - // Compatibility handlers  
68 - this.add(onSessionProfileBad, getProfile, (beforeNewGameProfile), "generateOfflineUUID");  
69 - }  
70 -  
71 - protected final Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback)  
72 - {  
73 - return this.add(event, targetMethod, injectionPoint, callback, this.getProxy());  
74 - }  
75 -  
76 - protected Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback, Obf proxy)  
77 - {  
78 - return this.addEvent(event, targetMethod, injectionPoint).addListener(new MethodInfo(proxy, callback));  
79 - }  
80 -}  
src/main/java/com/mumfrey/liteloader/core/LiteLoader.java
@@ -7,26 +7,10 @@ import java.util.List; @@ -7,26 +7,10 @@ import java.util.List;
7 7
8 import javax.activity.InvalidActivityException; 8 import javax.activity.InvalidActivityException;
9 9
10 -import net.minecraft.crash.CrashReport;  
11 -import net.minecraft.crash.CrashReportCategory;  
12 -import net.minecraft.launchwrapper.LaunchClassLoader;  
13 -import net.minecraft.network.EnumConnectionState;  
14 -import net.minecraft.network.INetHandler;  
15 -import net.minecraft.network.play.server.S01PacketJoinGame;  
16 -import net.minecraft.profiler.Profiler;  
17 -import net.minecraft.world.World; 10 +import org.spongepowered.asm.mixin.MixinEnvironment;
18 11
19 import com.mumfrey.liteloader.LiteMod; 12 import com.mumfrey.liteloader.LiteMod;
20 -import com.mumfrey.liteloader.api.CoreProvider;  
21 -import com.mumfrey.liteloader.api.CustomisationProvider;  
22 -import com.mumfrey.liteloader.api.Listener;  
23 -import com.mumfrey.liteloader.api.LiteAPI;  
24 -import com.mumfrey.liteloader.api.ModLoadObserver;  
25 -import com.mumfrey.liteloader.api.PostRenderObserver;  
26 -import com.mumfrey.liteloader.api.ShutdownObserver;  
27 -import com.mumfrey.liteloader.api.TickObserver;  
28 -import com.mumfrey.liteloader.api.TranslationProvider;  
29 -import com.mumfrey.liteloader.api.WorldObserver; 13 +import com.mumfrey.liteloader.api.*;
30 import com.mumfrey.liteloader.api.manager.APIAdapter; 14 import com.mumfrey.liteloader.api.manager.APIAdapter;
31 import com.mumfrey.liteloader.api.manager.APIProvider; 15 import com.mumfrey.liteloader.api.manager.APIProvider;
32 import com.mumfrey.liteloader.common.GameEngine; 16 import com.mumfrey.liteloader.common.GameEngine;
@@ -37,12 +21,7 @@ import com.mumfrey.liteloader.core.event.HandlerList; @@ -37,12 +21,7 @@ import com.mumfrey.liteloader.core.event.HandlerList;
37 import com.mumfrey.liteloader.crashreport.CallableLaunchWrapper; 21 import com.mumfrey.liteloader.crashreport.CallableLaunchWrapper;
38 import com.mumfrey.liteloader.crashreport.CallableLiteLoaderBrand; 22 import com.mumfrey.liteloader.crashreport.CallableLiteLoaderBrand;
39 import com.mumfrey.liteloader.crashreport.CallableLiteLoaderMods; 23 import com.mumfrey.liteloader.crashreport.CallableLiteLoaderMods;
40 -import com.mumfrey.liteloader.interfaces.FastIterableDeque;  
41 -import com.mumfrey.liteloader.interfaces.Loadable;  
42 -import com.mumfrey.liteloader.interfaces.LoadableMod;  
43 -import com.mumfrey.liteloader.interfaces.LoaderEnumerator;  
44 -import com.mumfrey.liteloader.interfaces.ObjectFactory;  
45 -import com.mumfrey.liteloader.interfaces.PanelManager; 24 +import com.mumfrey.liteloader.interfaces.*;
46 import com.mumfrey.liteloader.launch.LoaderEnvironment; 25 import com.mumfrey.liteloader.launch.LoaderEnvironment;
47 import com.mumfrey.liteloader.launch.LoaderEnvironment.EnvironmentType; 26 import com.mumfrey.liteloader.launch.LoaderEnvironment.EnvironmentType;
48 import com.mumfrey.liteloader.launch.LoaderProperties; 27 import com.mumfrey.liteloader.launch.LoaderProperties;
@@ -56,6 +35,15 @@ import com.mumfrey.liteloader.util.Input; @@ -56,6 +35,15 @@ import com.mumfrey.liteloader.util.Input;
56 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 35 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
57 import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity; 36 import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity;
58 37
  38 +import net.minecraft.crash.CrashReport;
  39 +import net.minecraft.crash.CrashReportCategory;
  40 +import net.minecraft.launchwrapper.LaunchClassLoader;
  41 +import net.minecraft.network.EnumConnectionState;
  42 +import net.minecraft.network.INetHandler;
  43 +import net.minecraft.network.play.server.S01PacketJoinGame;
  44 +import net.minecraft.profiler.Profiler;
  45 +import net.minecraft.world.World;
  46 +
59 /** 47 /**
60 * LiteLoader is a simple loader which loads and provides useful callbacks to 48 * LiteLoader is a simple loader which loads and provides useful callbacks to
61 * lightweight mods 49 * lightweight mods
@@ -524,6 +512,7 @@ public final class LiteLoader @@ -524,6 +512,7 @@ public final class LiteLoader
524 if (LiteLoaderLogger.DEBUG) 512 if (LiteLoaderLogger.DEBUG)
525 { 513 {
526 EventTransformer.dumpInjectionState(); 514 EventTransformer.dumpInjectionState();
  515 + MixinEnvironment.getCurrentEnvironment().audit();
527 LiteLoaderLogger.info("Debug info dumped to console"); 516 LiteLoaderLogger.info("Debug info dumped to console");
528 } 517 }
529 else 518 else
src/main/java/com/mumfrey/liteloader/core/LiteLoaderBootstrap.java
1 package com.mumfrey.liteloader.core; 1 package com.mumfrey.liteloader.core;
2 2
3 -import java.io.File;  
4 -import java.io.FileInputStream;  
5 -import java.io.FileNotFoundException;  
6 -import java.io.FileWriter;  
7 -import java.io.InputStream;  
8 -import java.io.Serializable; 3 +import java.io.*;
9 import java.lang.reflect.Field; 4 import java.lang.reflect.Field;
10 import java.lang.reflect.Method; 5 import java.lang.reflect.Method;
11 import java.util.List; 6 import java.util.List;
@@ -15,10 +10,7 @@ import org.apache.logging.log4j.core.Layout; @@ -15,10 +10,7 @@ import org.apache.logging.log4j.core.Layout;
15 import org.apache.logging.log4j.core.Logger; 10 import org.apache.logging.log4j.core.Logger;
16 import org.apache.logging.log4j.core.appender.FileAppender; 11 import org.apache.logging.log4j.core.appender.FileAppender;
17 import org.apache.logging.log4j.core.layout.PatternLayout; 12 import org.apache.logging.log4j.core.layout.PatternLayout;
18 -  
19 -import net.minecraft.launchwrapper.ITweaker;  
20 -import net.minecraft.launchwrapper.Launch;  
21 -import net.minecraft.launchwrapper.LaunchClassLoader; 13 +import org.spongepowered.asm.mixin.MixinEnvironment;
22 14
23 import com.mumfrey.liteloader.api.LiteAPI; 15 import com.mumfrey.liteloader.api.LiteAPI;
24 import com.mumfrey.liteloader.api.manager.APIAdapter; 16 import com.mumfrey.liteloader.api.manager.APIAdapter;
@@ -27,15 +19,15 @@ import com.mumfrey.liteloader.api.manager.APIRegistry; @@ -27,15 +19,15 @@ import com.mumfrey.liteloader.api.manager.APIRegistry;
27 import com.mumfrey.liteloader.common.LoadingProgress; 19 import com.mumfrey.liteloader.common.LoadingProgress;
28 import com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI; 20 import com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI;
29 import com.mumfrey.liteloader.interfaces.LoaderEnumerator; 21 import com.mumfrey.liteloader.interfaces.LoaderEnumerator;
30 -import com.mumfrey.liteloader.launch.ClassTransformerManager;  
31 -import com.mumfrey.liteloader.launch.LiteLoaderTweaker;  
32 -import com.mumfrey.liteloader.launch.LoaderBootstrap;  
33 -import com.mumfrey.liteloader.launch.LoaderEnvironment;  
34 -import com.mumfrey.liteloader.launch.LoaderProperties;  
35 -import com.mumfrey.liteloader.launch.StartupEnvironment; 22 +import com.mumfrey.liteloader.launch.*;
  23 +import com.mumfrey.liteloader.util.ObfuscationUtilities;
36 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 24 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
37 import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity; 25 import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity;
38 26
  27 +import net.minecraft.launchwrapper.ITweaker;
  28 +import net.minecraft.launchwrapper.Launch;
  29 +import net.minecraft.launchwrapper.LaunchClassLoader;
  30 +
39 /** 31 /**
40 * LiteLoaderBootstrap is responsible for managing the early part of the 32 * LiteLoaderBootstrap is responsible for managing the early part of the
41 * LiteLoader startup process, this is to ensure that NONE of the Minecraft 33 * LiteLoader startup process, this is to ensure that NONE of the Minecraft
@@ -316,10 +308,18 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP @@ -316,10 +308,18 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP
316 308
317 this.enumerator = this.spawnEnumerator(classLoader); 309 this.enumerator = this.spawnEnumerator(classLoader);
318 this.enumerator.onPreInit(); 310 this.enumerator.onPreInit();
  311 +
  312 + this.initMixins();
319 313
320 LiteLoaderLogger.info(Verbosity.REDUCED, "LiteLoader PREINIT complete"); 314 LiteLoaderLogger.info(Verbosity.REDUCED, "LiteLoader PREINIT complete");
321 } 315 }
322 316
  317 + private void initMixins()
  318 + {
  319 + LiteLoaderLogger.info(Verbosity.REDUCED, "Initialising LiteLoader Mixins");
  320 + this.getAPIAdapter().initMixins();
  321 + }
  322 +
323 /** 323 /**
324 * @param classLoader 324 * @param classLoader
325 */ 325 */
@@ -341,6 +341,12 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP @@ -341,6 +341,12 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP
341 } 341 }
342 342
343 LoadingProgress.setEnabled(this.getAndStoreBooleanProperty(LoaderProperties.OPTION_LOADING_BAR, true)); 343 LoadingProgress.setEnabled(this.getAndStoreBooleanProperty(LoaderProperties.OPTION_LOADING_BAR, true));
  344 +
  345 + if (ObfuscationUtilities.fmlIsPresent())
  346 + {
  347 + LiteLoaderLogger.info("FML detected, switching to searge mappings");
  348 + MixinEnvironment.getDefaultEnvironment().setObfuscationContext("searge");
  349 + }
344 } 350 }
345 351
346 /* (non-Javadoc) 352 /* (non-Javadoc)
@@ -740,7 +746,7 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP @@ -740,7 +746,7 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP
740 @Override 746 @Override
741 public List<String> getRequiredTransformers() 747 public List<String> getRequiredTransformers()
742 { 748 {
743 - return this.apiAdapter.getRequiredTransformers(); 749 + return this.getAPIAdapter().getRequiredTransformers();
744 } 750 }
745 751
746 /* (non-Javadoc) 752 /* (non-Javadoc)
@@ -750,7 +756,7 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP @@ -750,7 +756,7 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP
750 @Override 756 @Override
751 public List<String> getRequiredDownstreamTransformers() 757 public List<String> getRequiredDownstreamTransformers()
752 { 758 {
753 - List<String> requiredDownstreamTransformers = this.apiAdapter.getRequiredDownstreamTransformers(); 759 + List<String> requiredDownstreamTransformers = this.getAPIAdapter().getRequiredDownstreamTransformers();
754 requiredDownstreamTransformers.add(0, "com.mumfrey.liteloader.transformers.event.EventTransformer"); 760 requiredDownstreamTransformers.add(0, "com.mumfrey.liteloader.transformers.event.EventTransformer");
755 return requiredDownstreamTransformers; 761 return requiredDownstreamTransformers;
756 } 762 }
src/main/java/com/mumfrey/liteloader/core/LiteLoaderEventBroker.java
@@ -5,6 +5,23 @@ import java.util.HashMap; @@ -5,6 +5,23 @@ import java.util.HashMap;
5 import java.util.Map; 5 import java.util.Map;
6 import java.util.UUID; 6 import java.util.UUID;
7 7
  8 +import com.mojang.authlib.GameProfile;
  9 +import com.mumfrey.liteloader.*;
  10 +import com.mumfrey.liteloader.PlayerInteractionListener.MouseButton;
  11 +import com.mumfrey.liteloader.api.InterfaceProvider;
  12 +import com.mumfrey.liteloader.api.Listener;
  13 +import com.mumfrey.liteloader.api.ShutdownObserver;
  14 +import com.mumfrey.liteloader.common.GameEngine;
  15 +import com.mumfrey.liteloader.common.LoadingProgress;
  16 +import com.mumfrey.liteloader.common.ducks.IPacketClientSettings;
  17 +import com.mumfrey.liteloader.core.event.HandlerList;
  18 +import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp;
  19 +import com.mumfrey.liteloader.interfaces.FastIterable;
  20 +import com.mumfrey.liteloader.interfaces.FastIterableDeque;
  21 +import com.mumfrey.liteloader.launch.LoaderProperties;
  22 +import com.mumfrey.liteloader.util.Position;
  23 +import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
  24 +
8 import net.minecraft.command.ICommandManager; 25 import net.minecraft.command.ICommandManager;
9 import net.minecraft.command.ServerCommandManager; 26 import net.minecraft.command.ServerCommandManager;
10 import net.minecraft.entity.player.EntityPlayerMP; 27 import net.minecraft.entity.player.EntityPlayerMP;
@@ -25,31 +42,6 @@ import net.minecraft.world.World; @@ -25,31 +42,6 @@ import net.minecraft.world.World;
25 import net.minecraft.world.WorldServer; 42 import net.minecraft.world.WorldServer;
26 import net.minecraft.world.WorldSettings; 43 import net.minecraft.world.WorldSettings;
27 44
28 -import com.mojang.authlib.GameProfile;  
29 -import com.mumfrey.liteloader.LiteMod;  
30 -import com.mumfrey.liteloader.PlayerInteractionListener;  
31 -import com.mumfrey.liteloader.PlayerInteractionListener.MouseButton;  
32 -import com.mumfrey.liteloader.PlayerMoveListener;  
33 -import com.mumfrey.liteloader.PluginChannelListener;  
34 -import com.mumfrey.liteloader.ServerCommandProvider;  
35 -import com.mumfrey.liteloader.ServerPlayerListener;  
36 -import com.mumfrey.liteloader.ServerPluginChannelListener;  
37 -import com.mumfrey.liteloader.ServerTickable;  
38 -import com.mumfrey.liteloader.ShutdownListener;  
39 -import com.mumfrey.liteloader.api.InterfaceProvider;  
40 -import com.mumfrey.liteloader.api.Listener;  
41 -import com.mumfrey.liteloader.api.ShutdownObserver;  
42 -import com.mumfrey.liteloader.common.GameEngine;  
43 -import com.mumfrey.liteloader.common.LoadingProgress;  
44 -import com.mumfrey.liteloader.core.event.HandlerList;  
45 -import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp;  
46 -import com.mumfrey.liteloader.interfaces.FastIterable;  
47 -import com.mumfrey.liteloader.interfaces.FastIterableDeque;  
48 -import com.mumfrey.liteloader.launch.LoaderProperties;  
49 -import com.mumfrey.liteloader.util.Position;  
50 -import com.mumfrey.liteloader.util.PrivateFields;  
51 -import com.mumfrey.liteloader.util.log.LiteLoaderLogger;  
52 -  
53 /** 45 /**
54 * @author Adam Mummery-Smith 46 * @author Adam Mummery-Smith
55 * 47 *
@@ -513,7 +505,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe @@ -513,7 +505,7 @@ public abstract class LiteLoaderEventBroker&lt;TClient, TServer extends MinecraftSe
513 void onPlayerSettingsReceived(EntityPlayerMP player, C15PacketClientSettings packet) 505 void onPlayerSettingsReceived(EntityPlayerMP player, C15PacketClientSettings packet)
514 { 506 {
515 PlayerEventState playerState = this.getPlayerState(player); 507 PlayerEventState playerState = this.getPlayerState(player);
516 - playerState.setTraceDistance(PrivateFields.viewDistance.get(packet)); 508 + playerState.setTraceDistance(((IPacketClientSettings)packet).getViewDistance());
517 playerState.setLocale(packet.getLang()); 509 playerState.setLocale(packet.getLang());
518 } 510 }
519 511
src/main/java/com/mumfrey/liteloader/core/CallbackProxyCommon.java renamed to src/main/java/com/mumfrey/liteloader/core/Proxy.java
1 package com.mumfrey.liteloader.core; 1 package com.mumfrey.liteloader.core;
2 2
  3 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  4 +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
  5 +
  6 +import com.mojang.authlib.GameProfile;
  7 +
3 import net.minecraft.entity.player.EntityPlayer; 8 import net.minecraft.entity.player.EntityPlayer;
4 import net.minecraft.entity.player.EntityPlayerMP; 9 import net.minecraft.entity.player.EntityPlayerMP;
5 import net.minecraft.item.ItemStack; 10 import net.minecraft.item.ItemStack;
@@ -17,89 +22,83 @@ import net.minecraft.util.EnumFacing; @@ -17,89 +22,83 @@ import net.minecraft.util.EnumFacing;
17 import net.minecraft.world.World; 22 import net.minecraft.world.World;
18 import net.minecraft.world.WorldServer; 23 import net.minecraft.world.WorldServer;
19 24
20 -import com.mojang.authlib.GameProfile;  
21 -import com.mumfrey.liteloader.transformers.event.EventInfo;  
22 -import com.mumfrey.liteloader.transformers.event.ReturnEventInfo;  
23 -  
24 -public abstract class CallbackProxyCommon 25 +public abstract class Proxy
25 { 26 {
26 - private static LiteLoaderEventBroker<?, ?> eventBroker; 27 + private static LiteLoaderEventBroker<?, ?> broker;
27 28
28 - protected CallbackProxyCommon() {} 29 + protected Proxy() {}
29 30
30 protected static void onStartupComplete() 31 protected static void onStartupComplete()
31 { 32 {
32 - CallbackProxyCommon.eventBroker = LiteLoaderEventBroker.broker; 33 + Proxy.broker = LiteLoaderEventBroker.broker;
33 34
34 - if (CallbackProxyCommon.eventBroker == null) 35 + if (Proxy.broker == null)
35 { 36 {
36 throw new RuntimeException("LiteLoader failed to start up properly." 37 throw new RuntimeException("LiteLoader failed to start up properly."
37 + " The game is in an unstable state and must shut down now. Check the developer log for startup errors"); 38 + " The game is in an unstable state and must shut down now. Check the developer log for startup errors");
38 } 39 }
39 } 40 }
40 41
41 - public static void onInitializePlayerConnection(EventInfo<ServerConfigurationManager> e, NetworkManager netManager, EntityPlayerMP player) 42 + public static void onInitializePlayerConnection(ServerConfigurationManager source, NetworkManager netManager, EntityPlayerMP player)
42 { 43 {
43 - CallbackProxyCommon.eventBroker.onInitializePlayerConnection(e.getSource(), netManager, player); 44 + Proxy.broker.onInitializePlayerConnection(source, netManager, player);
44 } 45 }
45 46
46 - public static void onPlayerLogin(EventInfo<ServerConfigurationManager> e, EntityPlayerMP player) 47 + public static void onPlayerLogin(ServerConfigurationManager source, EntityPlayerMP player)
47 { 48 {
48 - CallbackProxyCommon.eventBroker.onPlayerLogin(e.getSource(), player); 49 + Proxy.broker.onPlayerLogin(source, player);
49 } 50 }
50 51
51 - public static void onPlayerLogout(EventInfo<ServerConfigurationManager> e, EntityPlayerMP player) 52 + public static void onPlayerLogout(ServerConfigurationManager source, EntityPlayerMP player)
52 { 53 {
53 - CallbackProxyCommon.eventBroker.onPlayerLogout(e.getSource(), player); 54 + Proxy.broker.onPlayerLogout(source, player);
54 } 55 }
55 56
56 - public static void onSpawnPlayer(ReturnEventInfo<ServerConfigurationManager, EntityPlayerMP> e, GameProfile profile) 57 + public static void onSpawnPlayer(CallbackInfoReturnable<EntityPlayerMP> cir, ServerConfigurationManager source, GameProfile profile)
57 { 58 {
58 - CallbackProxyCommon.eventBroker.onSpawnPlayer(e.getSource(), e.getReturnValue(), profile); 59 + Proxy.broker.onSpawnPlayer(source, cir.getReturnValue(), profile);
59 } 60 }
60 61
61 - public static void onRespawnPlayer(ReturnEventInfo<ServerConfigurationManager, EntityPlayerMP> e, EntityPlayerMP oldPlayer, int dimension,  
62 - boolean won) 62 + public static void onRespawnPlayer(CallbackInfoReturnable<EntityPlayerMP> cir, ServerConfigurationManager source, EntityPlayerMP oldPlayer,
  63 + int dimension, boolean won)
63 { 64 {
64 - CallbackProxyCommon.eventBroker.onRespawnPlayer(e.getSource(), e.getReturnValue(), oldPlayer, dimension, won); 65 + Proxy.broker.onRespawnPlayer(source, cir.getReturnValue(), oldPlayer, dimension, won);
65 } 66 }
66 67
67 - public static void onServerTick(EventInfo<MinecraftServer> e) 68 + public static void onServerTick(MinecraftServer mcServer)
68 { 69 {
69 - CallbackProxyCommon.eventBroker.onServerTick(e.getSource()); 70 + Proxy.broker.onServerTick(mcServer);
70 } 71 }
71 72
72 - public static void onPlaceBlock(EventInfo<NetHandlerPlayServer> e, C08PacketPlayerBlockPlacement packet) 73 + public static void onPlaceBlock(CallbackInfo ci, NetHandlerPlayServer netHandler, C08PacketPlayerBlockPlacement packet)
73 { 74 {
74 - NetHandlerPlayServer netHandler = e.getSource();  
75 - if (!CallbackProxyCommon.eventBroker.onPlaceBlock(netHandler, netHandler.playerEntity, packet.getPosition(), 75 + if (!Proxy.broker.onPlaceBlock(netHandler, netHandler.playerEntity, packet.getPosition(),
76 EnumFacing.getFront(packet.getPlacedBlockDirection()))) 76 EnumFacing.getFront(packet.getPlacedBlockDirection())))
77 { 77 {
78 - e.cancel(); 78 + ci.cancel();
79 } 79 }
80 } 80 }
81 81
82 - public static void onClickedAir(EventInfo<NetHandlerPlayServer> e, C0APacketAnimation packet) 82 + public static void onClickedAir(CallbackInfo ci, NetHandlerPlayServer netHandler, C0APacketAnimation packet)
83 { 83 {
84 - if (!CallbackProxyCommon.eventBroker.onClickedAir(e.getSource())) 84 + if (!Proxy.broker.onClickedAir(netHandler))
85 { 85 {
86 - e.cancel(); 86 + ci.cancel();
87 } 87 }
88 } 88 }
89 89
90 - public static void onPlayerDigging(EventInfo<NetHandlerPlayServer> e, C07PacketPlayerDigging packet) 90 + public static void onPlayerDigging(CallbackInfo ci, NetHandlerPlayServer netHandler, C07PacketPlayerDigging packet)
91 { 91 {
92 if (packet.getStatus() == C07PacketPlayerDigging.Action.START_DESTROY_BLOCK) 92 if (packet.getStatus() == C07PacketPlayerDigging.Action.START_DESTROY_BLOCK)
93 { 93 {
94 - NetHandlerPlayServer netHandler = e.getSource();  
95 - if (!CallbackProxyCommon.eventBroker.onPlayerDigging(netHandler, packet.getPosition(), netHandler.playerEntity)) 94 + if (!Proxy.broker.onPlayerDigging(netHandler, packet.getPosition(), netHandler.playerEntity))
96 { 95 {
97 - e.cancel(); 96 + ci.cancel();
98 } 97 }
99 } 98 }
100 } 99 }
101 100
102 - public static void onUseItem(ReturnEventInfo<ItemInWorldManager, Boolean> e, EntityPlayer player, World world, ItemStack itemStack, BlockPos pos, 101 + public static void onUseItem(CallbackInfoReturnable<Boolean> ci, EntityPlayer player, World world, ItemStack itemStack, BlockPos pos,
103 EnumFacing side, float par8, float par9, float par10) 102 EnumFacing side, float par8, float par9, float par10)
104 { 103 {
105 if (!(player instanceof EntityPlayerMP)) 104 if (!(player instanceof EntityPlayerMP))
@@ -107,39 +106,35 @@ public abstract class CallbackProxyCommon @@ -107,39 +106,35 @@ public abstract class CallbackProxyCommon
107 return; 106 return;
108 } 107 }
109 108
110 - if (!CallbackProxyCommon.eventBroker.onUseItem(pos, side, (EntityPlayerMP)player)) 109 + if (!Proxy.broker.onUseItem(pos, side, (EntityPlayerMP)player))
111 { 110 {
112 - e.setReturnValue(false); 111 + ci.setReturnValue(false);
113 } 112 }
114 } 113 }
115 114
116 - public static void onBlockClicked(EventInfo<ItemInWorldManager> e, BlockPos pos, EnumFacing side) 115 + public static void onBlockClicked(CallbackInfo ci, ItemInWorldManager manager, BlockPos pos, EnumFacing side)
117 { 116 {
118 - ItemInWorldManager manager = e.getSource();  
119 -  
120 - if (!CallbackProxyCommon.eventBroker.onBlockClicked(pos, side, manager)) 117 + if (!Proxy.broker.onBlockClicked(pos, side, manager))
121 { 118 {
122 - e.cancel(); 119 + ci.cancel();
123 } 120 }
124 } 121 }
125 122
126 - public static void onPlayerMoved(EventInfo<NetHandlerPlayServer> e, C03PacketPlayer packet, WorldServer world, double oldPosX, double oldPosY,  
127 - double oldPosZ) 123 + public static void onPlayerMoved(CallbackInfo ci, NetHandlerPlayServer netHandler, C03PacketPlayer packet, WorldServer world, double oldPosX,
  124 + double oldPosY, double oldPosZ)
128 { 125 {
129 - NetHandlerPlayServer netHandler = e.getSource();  
130 - if (!CallbackProxyCommon.eventBroker.onPlayerMove(netHandler, packet, netHandler.playerEntity, world)) 126 + if (!Proxy.broker.onPlayerMove(netHandler, packet, netHandler.playerEntity, world))
131 { 127 {
132 - e.cancel(); 128 + ci.cancel();
133 } 129 }
134 } 130 }
135 131
136 - public static void onPlayerMoved(EventInfo<NetHandlerPlayServer> e, C03PacketPlayer packet, WorldServer world, double oldPosX, double oldPosY,  
137 - double oldPosZ, double deltaMoveSq, double deltaX, double deltaY, double deltaZ) 132 + public static void onPlayerMoved(CallbackInfo ci, NetHandlerPlayServer netHandler, C03PacketPlayer packet, WorldServer world, double oldPosX,
  133 + double oldPosY, double oldPosZ, double deltaMoveSq, double deltaX, double deltaY, double deltaZ)
138 { 134 {
139 - NetHandlerPlayServer netHandler = e.getSource();  
140 - if (!CallbackProxyCommon.eventBroker.onPlayerMove(netHandler, packet, netHandler.playerEntity, world)) 135 + if (!Proxy.broker.onPlayerMove(netHandler, packet, netHandler.playerEntity, world))
141 { 136 {
142 - e.cancel(); 137 + ci.cancel();
143 } 138 }
144 } 139 }
145 } 140 }
src/main/java/com/mumfrey/liteloader/core/api/LiteLoaderCoreAPI.java
@@ -5,8 +5,11 @@ import java.util.ArrayList; @@ -5,8 +5,11 @@ import java.util.ArrayList;
5 import java.util.Collections; 5 import java.util.Collections;
6 import java.util.List; 6 import java.util.List;
7 7
  8 +import org.spongepowered.asm.mixin.MixinEnvironment.CompatibilityLevel;
  9 +
8 import com.mumfrey.liteloader.api.EnumeratorModule; 10 import com.mumfrey.liteloader.api.EnumeratorModule;
9 import com.mumfrey.liteloader.api.LiteAPI; 11 import com.mumfrey.liteloader.api.LiteAPI;
  12 +import com.mumfrey.liteloader.api.MixinConfigProvider;
10 import com.mumfrey.liteloader.core.LiteLoaderVersion; 13 import com.mumfrey.liteloader.core.LiteLoaderVersion;
11 import com.mumfrey.liteloader.interfaces.ObjectFactory; 14 import com.mumfrey.liteloader.interfaces.ObjectFactory;
12 import com.mumfrey.liteloader.launch.LoaderEnvironment; 15 import com.mumfrey.liteloader.launch.LoaderEnvironment;
@@ -18,7 +21,7 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; @@ -18,7 +21,7 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
18 * 21 *
19 * @author Adam Mummery-Smith 22 * @author Adam Mummery-Smith
20 */ 23 */
21 -public abstract class LiteLoaderCoreAPI implements LiteAPI 24 +public abstract class LiteLoaderCoreAPI implements LiteAPI, MixinConfigProvider
22 { 25 {
23 protected static final String PKG_LITELOADER = "com.mumfrey.liteloader"; 26 protected static final String PKG_LITELOADER = "com.mumfrey.liteloader";
24 protected static final String PKG_LITELOADER_COMMON = LiteLoaderCoreAPI.PKG_LITELOADER + ".common"; 27 protected static final String PKG_LITELOADER_COMMON = LiteLoaderCoreAPI.PKG_LITELOADER + ".common";
@@ -144,4 +147,30 @@ public abstract class LiteLoaderCoreAPI implements LiteAPI @@ -144,4 +147,30 @@ public abstract class LiteLoaderCoreAPI implements LiteAPI
144 * Get the ObjectFactory 147 * Get the ObjectFactory
145 */ 148 */
146 public abstract ObjectFactory<?, ?> getObjectFactory(); 149 public abstract ObjectFactory<?, ?> getObjectFactory();
  150 +
  151 + @Override
  152 + public MixinConfigProvider getMixins()
  153 + {
  154 + return this;
  155 + }
  156 +
  157 + @Override
  158 + public CompatibilityLevel getCompatibilityLevel()
  159 + {
  160 + return null;
  161 + }
  162 +
  163 + @Override
  164 + public String[] getMixinConfigs()
  165 + {
  166 + return new String[] {
  167 + "mixins.liteloader.core.json"
  168 + };
  169 + }
  170 +
  171 + @Override
  172 + public String[] getErrorHandlers()
  173 + {
  174 + return null;
  175 + }
147 } 176 }
src/main/java/com/mumfrey/liteloader/core/runtime/Methods.java
@@ -16,54 +16,54 @@ public abstract class Methods @@ -16,54 +16,54 @@ public abstract class Methods
16 // CHECKSTYLE:OFF 16 // CHECKSTYLE:OFF
17 17
18 // Client & General 18 // Client & General
19 - public static final MethodInfo startGame = new MethodInfo(Obf.Minecraft, Obf.startGame, Void.TYPE);  
20 - public static final MethodInfo runGameLoop = new MethodInfo(Obf.Minecraft, Obf.runGameLoop, Void.TYPE);  
21 - public static final MethodInfo runTick = new MethodInfo(Obf.Minecraft, Obf.runTick, Void.TYPE);  
22 - public static final MethodInfo updateFramebufferSize = new MethodInfo(Obf.Minecraft, Obf.updateFramebufferSize, Void.TYPE);  
23 - public static final MethodInfo framebufferRender = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRender, Void.TYPE, Integer.TYPE, Integer.TYPE);  
24 - public static final MethodInfo framebufferRenderExt = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRenderExt, Void.TYPE, Integer.TYPE, Integer.TYPE, Boolean.TYPE);  
25 - public static final MethodInfo bindFramebufferTexture = new MethodInfo(Obf.FrameBuffer, Obf.bindFramebufferTexture, Void.TYPE);  
26 - public static final MethodInfo sendChatMessage = new MethodInfo(Obf.EntityPlayerSP, Obf.sendChatMessage, Void.TYPE, String.class);  
27 - public static final MethodInfo renderWorld = new MethodInfo(Obf.EntityRenderer, Obf.renderWorld, Void.TYPE, Float.TYPE, Long.TYPE);  
28 - public static final MethodInfo renderWorldPass = new MethodInfo(Obf.EntityRenderer, Obf.renderWorldPass, Void.TYPE, Integer.TYPE, Float.TYPE, Long.TYPE);  
29 - public static final MethodInfo updateCameraAndRender = new MethodInfo(Obf.EntityRenderer, Obf.updateCameraAndRender, Void.TYPE, Float.TYPE);  
30 - public static final MethodInfo renderGameOverlay = new MethodInfo(Obf.GuiIngame, Obf.renderGameOverlay, Void.TYPE, Float.TYPE);  
31 - public static final MethodInfo drawChat = new MethodInfo(Obf.GuiNewChat, Obf.drawChat, Void.TYPE, Integer.TYPE);  
32 - public static final MethodInfo integratedServerCtor = new MethodInfo(Obf.IntegratedServer, Obf.constructor, Void.TYPE, Obf.Minecraft, String.class, String.class, Obf.WorldSettings);  
33 - public static final MethodInfo initPlayerConnection = new MethodInfo(Obf.ServerConfigurationManager, Obf.initializeConnectionToPlayer, Void.TYPE, Obf.NetworkManager, Obf.EntityPlayerMP);  
34 - public static final MethodInfo playerLoggedIn = new MethodInfo(Obf.ServerConfigurationManager, Obf.playerLoggedIn, Void.TYPE, Obf.EntityPlayerMP);  
35 - public static final MethodInfo playerLoggedOut = new MethodInfo(Obf.ServerConfigurationManager, Obf.playerLoggedOut, Void.TYPE, Obf.EntityPlayerMP);  
36 - public static final MethodInfo spawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.spawnPlayer, Obf.EntityPlayerMP, Obf.GameProfile);  
37 - public static final MethodInfo respawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.respawnPlayer, Obf.EntityPlayerMP, Obf.EntityPlayerMP, Integer.TYPE, Boolean.TYPE);  
38 - public static final MethodInfo glClear = new MethodInfo(Obf.GlStateManager, Obf.clear, Void.TYPE, Integer.TYPE);  
39 - public static final MethodInfo getProfile = new MethodInfo(Obf.Session, Obf.getProfile, Obf.GameProfile);  
40 - public static final MethodInfo saveScreenshot = new MethodInfo(Obf.ScreenShotHelper, Obf.saveScreenshot, Obf.IChatComponent, File.class, String.class, Integer.TYPE, Integer.TYPE, Obf.FrameBuffer);  
41 - public static final MethodInfo isFramebufferEnabled = new MethodInfo(Obf.OpenGlHelper, Obf.isFramebufferEnabled, Boolean.TYPE);  
42 - public static final MethodInfo doRenderEntity = new MethodInfo(Obf.RenderManager, Obf.doRenderEntity, Boolean.TYPE, Obf.Entity, Double.TYPE, Double.TYPE, Double.TYPE, Float.TYPE, Float.TYPE, Boolean.TYPE);  
43 - public static final MethodInfo doRender = new MethodInfo(Obf.Render, Obf.doRender, Void.TYPE, Obf.Entity, Double.TYPE, Double.TYPE, Double.TYPE, Float.TYPE, Float.TYPE);  
44 - public static final MethodInfo doRenderShadowAndFire = new MethodInfo(Obf.Render, Obf.doRenderShadowAndFire, Void.TYPE, Obf.Entity, Double.TYPE, Double.TYPE, Double.TYPE, Float.TYPE, Float.TYPE);  
45 - public static final MethodInfo realmsPlay = new MethodInfo(Obf.RealmsMainScreen, "play", Void.TYPE, Long.TYPE);  
46 - public static final MethodInfo realmsStopFetcher = new MethodInfo(Obf.RealmsMainScreen, "stopRealmsFetcherAndPinger", Void.TYPE);  
47 - public static final MethodInfo onBlockClicked = new MethodInfo(Obf.ItemInWorldManager, Obf.onBlockClicked, Void.TYPE, Obf.BlockPos, Obf.EnumFacing);  
48 - public static final MethodInfo activateBlockOrUseItem = new MethodInfo(Obf.ItemInWorldManager, Obf.activateBlockOrUseItem, Boolean.TYPE, Obf.EntityPlayer, Obf.World, Obf.ItemStack, Obf.BlockPos, Obf.EnumFacing, Float.TYPE, Float.TYPE, Float.TYPE);  
49 - public static final MethodInfo processBlockPlacement = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayerBlockPlacement, Void.TYPE, Packets.C08PacketPlayerBlockPlacement);  
50 - public static final MethodInfo handleAnimation = new MethodInfo(Obf.NetHandlerPlayServer, Obf.handleAnimation, Void.TYPE, Packets.C0APacketAnimation);  
51 - public static final MethodInfo processPlayerDigging = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayerDigging, Void.TYPE, Packets.C07PacketPlayerDigging);  
52 - public static final MethodInfo serverJobs = new MethodInfo(Obf.MinecraftServer, Obf.updateTimeLightAndEntities, Void.TYPE);  
53 - public static final MethodInfo checkThreadAndEnqueue = new MethodInfo(Obf.PacketThreadUtil, Obf.checkThreadAndEnqueue);  
54 - public static final MethodInfo processPlayer = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayer, Void.TYPE, Packets.C03PacketPlayer);  
55 - public static final MethodInfo renderSky = new MethodInfo(Obf.RenderGlobal, Obf.renderSky, Void.TYPE, Float.TYPE, Integer.TYPE);  
56 - public static final MethodInfo renderCloudsCheck = new MethodInfo(Obf.EntityRenderer, Obf.renderCloudsCheck, Void.TYPE, Obf.RenderGlobal, Float.TYPE, Integer.TYPE);  
57 - public static final MethodInfo setupFog = new MethodInfo(Obf.EntityRenderer, Obf.setupFog, Void.TYPE, Integer.TYPE, Float.TYPE); 19 + @Deprecated public static final MethodInfo startGame = new MethodInfo(Obf.Minecraft, Obf.startGame, Void.TYPE);
  20 + @Deprecated public static final MethodInfo runGameLoop = new MethodInfo(Obf.Minecraft, Obf.runGameLoop, Void.TYPE);
  21 + @Deprecated public static final MethodInfo runTick = new MethodInfo(Obf.Minecraft, Obf.runTick, Void.TYPE);
  22 + @Deprecated public static final MethodInfo updateFramebufferSize = new MethodInfo(Obf.Minecraft, Obf.updateFramebufferSize, Void.TYPE);
  23 + @Deprecated public static final MethodInfo framebufferRender = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRender, Void.TYPE, Integer.TYPE, Integer.TYPE);
  24 + @Deprecated public static final MethodInfo framebufferRenderExt = new MethodInfo(Obf.FrameBuffer, Obf.framebufferRenderExt, Void.TYPE, Integer.TYPE, Integer.TYPE, Boolean.TYPE);
  25 + @Deprecated public static final MethodInfo bindFramebufferTexture = new MethodInfo(Obf.FrameBuffer, Obf.bindFramebufferTexture, Void.TYPE);
  26 + @Deprecated public static final MethodInfo sendChatMessage = new MethodInfo(Obf.EntityPlayerSP, Obf.sendChatMessage, Void.TYPE, String.class);
  27 + @Deprecated public static final MethodInfo renderWorld = new MethodInfo(Obf.EntityRenderer, Obf.renderWorld, Void.TYPE, Float.TYPE, Long.TYPE);
  28 + @Deprecated public static final MethodInfo renderWorldPass = new MethodInfo(Obf.EntityRenderer, Obf.renderWorldPass, Void.TYPE, Integer.TYPE, Float.TYPE, Long.TYPE);
  29 + @Deprecated public static final MethodInfo updateCameraAndRender = new MethodInfo(Obf.EntityRenderer, Obf.updateCameraAndRender, Void.TYPE, Float.TYPE);
  30 + @Deprecated public static final MethodInfo renderGameOverlay = new MethodInfo(Obf.GuiIngame, Obf.renderGameOverlay, Void.TYPE, Float.TYPE);
  31 + @Deprecated public static final MethodInfo drawChat = new MethodInfo(Obf.GuiNewChat, Obf.drawChat, Void.TYPE, Integer.TYPE);
  32 + @Deprecated public static final MethodInfo integratedServerCtor = new MethodInfo(Obf.IntegratedServer, Obf.constructor, Void.TYPE, Obf.Minecraft, String.class, String.class, Obf.WorldSettings);
  33 + @Deprecated public static final MethodInfo initPlayerConnection = new MethodInfo(Obf.ServerConfigurationManager, Obf.initializeConnectionToPlayer, Void.TYPE, Obf.NetworkManager, Obf.EntityPlayerMP);
  34 + @Deprecated public static final MethodInfo playerLoggedIn = new MethodInfo(Obf.ServerConfigurationManager, Obf.playerLoggedIn, Void.TYPE, Obf.EntityPlayerMP);
  35 + @Deprecated public static final MethodInfo playerLoggedOut = new MethodInfo(Obf.ServerConfigurationManager, Obf.playerLoggedOut, Void.TYPE, Obf.EntityPlayerMP);
  36 + @Deprecated public static final MethodInfo spawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.spawnPlayer, Obf.EntityPlayerMP, Obf.GameProfile);
  37 + @Deprecated public static final MethodInfo respawnPlayer = new MethodInfo(Obf.ServerConfigurationManager, Obf.respawnPlayer, Obf.EntityPlayerMP, Obf.EntityPlayerMP, Integer.TYPE, Boolean.TYPE);
  38 + @Deprecated public static final MethodInfo glClear = new MethodInfo(Obf.GlStateManager, Obf.clear, Void.TYPE, Integer.TYPE);
  39 + @Deprecated public static final MethodInfo getProfile = new MethodInfo(Obf.Session, Obf.getProfile, Obf.GameProfile);
  40 + @Deprecated public static final MethodInfo saveScreenshot = new MethodInfo(Obf.ScreenShotHelper, Obf.saveScreenshot, Obf.IChatComponent, File.class, String.class, Integer.TYPE, Integer.TYPE, Obf.FrameBuffer);
  41 + @Deprecated public static final MethodInfo isFramebufferEnabled = new MethodInfo(Obf.OpenGlHelper, Obf.isFramebufferEnabled, Boolean.TYPE);
  42 + @Deprecated public static final MethodInfo doRenderEntity = new MethodInfo(Obf.RenderManager, Obf.doRenderEntity, Boolean.TYPE, Obf.Entity, Double.TYPE, Double.TYPE, Double.TYPE, Float.TYPE, Float.TYPE, Boolean.TYPE);
  43 + @Deprecated public static final MethodInfo doRender = new MethodInfo(Obf.Render, Obf.doRender, Void.TYPE, Obf.Entity, Double.TYPE, Double.TYPE, Double.TYPE, Float.TYPE, Float.TYPE);
  44 + @Deprecated public static final MethodInfo doRenderShadowAndFire = new MethodInfo(Obf.Render, Obf.doRenderShadowAndFire, Void.TYPE, Obf.Entity, Double.TYPE, Double.TYPE, Double.TYPE, Float.TYPE, Float.TYPE);
  45 + @Deprecated public static final MethodInfo realmsPlay = new MethodInfo(Obf.RealmsMainScreen, "play", Void.TYPE, Long.TYPE);
  46 + @Deprecated public static final MethodInfo realmsStopFetcher = new MethodInfo(Obf.RealmsMainScreen, "stopRealmsFetcherAndPinger", Void.TYPE);
  47 + @Deprecated public static final MethodInfo onBlockClicked = new MethodInfo(Obf.ItemInWorldManager, Obf.onBlockClicked, Void.TYPE, Obf.BlockPos, Obf.EnumFacing);
  48 + @Deprecated public static final MethodInfo activateBlockOrUseItem = new MethodInfo(Obf.ItemInWorldManager, Obf.activateBlockOrUseItem, Boolean.TYPE, Obf.EntityPlayer, Obf.World, Obf.ItemStack, Obf.BlockPos, Obf.EnumFacing, Float.TYPE, Float.TYPE, Float.TYPE);
  49 + @Deprecated public static final MethodInfo processBlockPlacement = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayerBlockPlacement, Void.TYPE, Packets.C08PacketPlayerBlockPlacement);
  50 + @Deprecated public static final MethodInfo handleAnimation = new MethodInfo(Obf.NetHandlerPlayServer, Obf.handleAnimation, Void.TYPE, Packets.C0APacketAnimation);
  51 + @Deprecated public static final MethodInfo processPlayerDigging = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayerDigging, Void.TYPE, Packets.C07PacketPlayerDigging);
  52 + @Deprecated public static final MethodInfo serverJobs = new MethodInfo(Obf.MinecraftServer, Obf.updateTimeLightAndEntities, Void.TYPE);
  53 + @Deprecated public static final MethodInfo checkThreadAndEnqueue = new MethodInfo(Obf.PacketThreadUtil, Obf.checkThreadAndEnqueue);
  54 + @Deprecated public static final MethodInfo processPlayer = new MethodInfo(Obf.NetHandlerPlayServer, Obf.processPlayer, Void.TYPE, Packets.C03PacketPlayer);
  55 + @Deprecated public static final MethodInfo renderSky = new MethodInfo(Obf.RenderGlobal, Obf.renderSky, Void.TYPE, Float.TYPE, Integer.TYPE);
  56 + @Deprecated public static final MethodInfo renderCloudsCheck = new MethodInfo(Obf.EntityRenderer, Obf.renderCloudsCheck, Void.TYPE, Obf.RenderGlobal, Float.TYPE, Integer.TYPE);
  57 + @Deprecated public static final MethodInfo setupFog = new MethodInfo(Obf.EntityRenderer, Obf.setupFog, Void.TYPE, Integer.TYPE, Float.TYPE);
58 58
59 // Profiler 59 // Profiler
60 - public static final MethodInfo startSection = new MethodInfo(Obf.Profiler, Obf.startSection, Void.TYPE, String.class);  
61 - public static final MethodInfo endSection = new MethodInfo(Obf.Profiler, Obf.endSection, Void.TYPE);  
62 - public static final MethodInfo endStartSection = new MethodInfo(Obf.Profiler, Obf.endStartSection, Void.TYPE, String.class); 60 + @Deprecated public static final MethodInfo startSection = new MethodInfo(Obf.Profiler, Obf.startSection, Void.TYPE, String.class);
  61 + @Deprecated public static final MethodInfo endSection = new MethodInfo(Obf.Profiler, Obf.endSection, Void.TYPE);
  62 + @Deprecated public static final MethodInfo endStartSection = new MethodInfo(Obf.Profiler, Obf.endStartSection, Void.TYPE, String.class);
63 63
64 // Dedicated Server 64 // Dedicated Server
65 - public static final MethodInfo startServer = new MethodInfo(Obf.DedicatedServer, Obf.startServer, Boolean.TYPE);  
66 - public static final MethodInfo startServerThread = new MethodInfo(Obf.MinecraftServer, Obf.startServerThread, Void.TYPE); 65 + @Deprecated public static final MethodInfo startServer = new MethodInfo(Obf.DedicatedServer, Obf.startServer, Boolean.TYPE);
  66 + @Deprecated public static final MethodInfo startServerThread = new MethodInfo(Obf.MinecraftServer, Obf.startServerThread, Void.TYPE);
67 67
68 private Methods() {} 68 private Methods() {}
69 69
src/main/java/com/mumfrey/liteloader/core/runtime/Obf.java
@@ -17,8 +17,6 @@ public class Obf @@ -17,8 +17,6 @@ public class Obf
17 { 17 {
18 // Non-obfuscated references, here for convenience 18 // Non-obfuscated references, here for convenience
19 // ----------------------------------------------------------------------------------------- 19 // -----------------------------------------------------------------------------------------
20 - public static final Obf CallbackProxyClient = new Obf("com.mumfrey.liteloader.client.CallbackProxyClient" );  
21 - public static final Obf CallbackProxyServer = new Obf("com.mumfrey.liteloader.server.CallbackProxyServer" );  
22 public static final Obf EventProxy = new Obf("com.mumfrey.liteloader.core.event.EventProxy" ); 20 public static final Obf EventProxy = new Obf("com.mumfrey.liteloader.core.event.EventProxy" );
23 public static final Obf HandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList" ); 21 public static final Obf HandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList" );
24 public static final Obf BakedHandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList$BakedHandlerList" ); 22 public static final Obf BakedHandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList$BakedHandlerList" );
@@ -41,121 +39,128 @@ public class Obf @@ -41,121 +39,128 @@ public class Obf
41 public static final Obf IGuiTextField = new Obf("com.mumfrey.liteloader.client.overlays.IGuiTextField" ); 39 public static final Obf IGuiTextField = new Obf("com.mumfrey.liteloader.client.overlays.IGuiTextField" );
42 public static final Obf IEntityRenderer = new Obf("com.mumfrey.liteloader.client.overlays.IEntityRenderer" ); 40 public static final Obf IEntityRenderer = new Obf("com.mumfrey.liteloader.client.overlays.IEntityRenderer" );
43 public static final Obf ISoundHandler = new Obf("com.mumfrey.liteloader.client.overlays.ISoundHandler" ); 41 public static final Obf ISoundHandler = new Obf("com.mumfrey.liteloader.client.overlays.ISoundHandler" );
  42 +
  43 + // CHECKSTYLE:OFF
44 44
45 // Classes 45 // Classes
46 // ----------------------------------------------------------------------------------------- 46 // -----------------------------------------------------------------------------------------
47 public static final Obf Minecraft = new Obf("net.minecraft.client.Minecraft", "bsu" ); 47 public static final Obf Minecraft = new Obf("net.minecraft.client.Minecraft", "bsu" );
48 public static final Obf EntityRenderer = new Obf("net.minecraft.client.renderer.EntityRenderer", "cji" ); 48 public static final Obf EntityRenderer = new Obf("net.minecraft.client.renderer.EntityRenderer", "cji" );
49 - public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "btz" );  
50 - public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "uw" ); 49 + public static final Obf Blocks = new Obf("net.minecraft.init.Blocks", "aty" );
51 public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "h" ); 50 public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "h" );
52 public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "hg" ); 51 public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "hg" );
53 - public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "cyk" );  
54 - public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "arb" );  
55 - public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "sn" );  
56 - public static final Obf EntityPlayerMP = new Obf("net.minecraft.entity.player.EntityPlayerMP", "qw" );  
57 - public static final Obf NetworkManager = new Obf("net.minecraft.network.NetworkManager", "gr" );  
58 - public static final Obf DedicatedServer = new Obf("net.minecraft.server.dedicated.DedicatedServer", "po" );  
59 - public static final Obf EntityPlayerSP = new Obf("net.minecraft.client.entity.EntityPlayerSP", "cio" );  
60 - public static final Obf Blocks = new Obf("net.minecraft.init.Blocks", "aty" );  
61 public static final Obf Items = new Obf("net.minecraft.init.Items", "amk" ); 52 public static final Obf Items = new Obf("net.minecraft.init.Items", "amk" );
62 - public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "ckw" );  
63 - public static final Obf GuiNewChat = new Obf("net.minecraft.client.gui.GuiNewChat", "buh" );  
64 - public static final Obf GlStateManager = new Obf("net.minecraft.client.renderer.GlStateManager", "cjm" );  
65 - public static final Obf Session = new Obf("net.minecraft.util.Session", "btw" );  
66 - public static final Obf IChatComponent = new Obf("net.minecraft.util.IChatComponent", "ho" );  
67 - public static final Obf ScreenShotHelper = new Obf("net.minecraft.util.ScreenShotHelper", "btt" );  
68 - public static final Obf OpenGlHelper = new Obf("net.minecraft.client.renderer.OpenGlHelper", "dax" );  
69 - public static final Obf Entity = new Obf("net.minecraft.entity.Entity", "wv" );  
70 - public static final Obf RenderManager = new Obf("net.minecraft.client.renderer.entity.RenderManager", "cpt" );  
71 - public static final Obf Render = new Obf("net.minecraft.client.renderer.entity.Render", "cpu" );  
72 - public static final Obf GuiTextField = new Obf("net.minecraft.client.gui.GuiTextField", "bul" );  
73 - public static final Obf SoundHandler = new Obf("net.minecraft.client.audio.SoundHandler", "czh" );  
74 - public static final Obf BlockPos = new Obf("net.minecraft.util.BlockPos", "dt" );  
75 - public static final Obf EnumFacing = new Obf("net.minecraft.util.EnumFacing", "ej" );  
76 - public static final Obf ItemInWorldManager = new Obf("net.minecraft.server.management.ItemInWorldManager", "qx" );  
77 - public static final Obf NetHandlerPlayServer = new Obf("net.minecraft.network.NetHandlerPlayServer", "rj" );  
78 - public static final Obf EntityPlayer = new Obf("net.minecraft.entity.player.EntityPlayer", "ahd" );  
79 - public static final Obf World = new Obf("net.minecraft.world.World", "aqu" );  
80 - public static final Obf ItemStack = new Obf("net.minecraft.item.ItemStack", "amj" );  
81 - public static final Obf PacketThreadUtil = new Obf("net.minecraft.network.PacketThreadUtil", "ig" );  
82 - public static final Obf RenderGlobal = new Obf("net.minecraft.client.renderer.RenderGlobal", "ckn" );  
83 53
84 // Fields 54 // Fields
85 // ----------------------------------------------------------------------------------------- 55 // -----------------------------------------------------------------------------------------
86 - public static final Obf minecraftProfiler = new Obf("field_71424_I", "y" );  
87 - public static final Obf entityRenderMap = new Obf("field_78729_o", "k" );  
88 - public static final Obf reloadListeners = new Obf("field_110546_b", "d" );  
89 - public static final Obf networkManager = new Obf("field_147393_d", "d" );  
90 - public static final Obf registryObjects = new Obf("field_82596_a", "c" );  
91 - public static final Obf underlyingIntegerMap = new Obf("field_148759_a", "a" );  
92 - public static final Obf identityMap = new Obf("field_148749_a", "a" );  
93 - public static final Obf objectList = new Obf("field_148748_b", "b" );  
94 - public static final Obf mapSpecialRenderers = new Obf("field_147559_m", "m" );  
95 public static final Obf tileEntityNameToClassMap = new Obf("field_145855_i", "f" ); 56 public static final Obf tileEntityNameToClassMap = new Obf("field_145855_i", "f" );
96 public static final Obf tileEntityClassToNameMap = new Obf("field_145853_j", "g" ); 57 public static final Obf tileEntityClassToNameMap = new Obf("field_145853_j", "g" );
97 - public static final Obf timer = new Obf("field_71428_T", "U" );  
98 - public static final Obf mcProfiler = new Obf("field_71424_I", "y" );  
99 - public static final Obf running = new Obf("field_71425_J", "z" );  
100 - public static final Obf defaultResourcePacks = new Obf("field_110449_ao", "aw" );  
101 - public static final Obf serverName = new Obf("field_71475_ae", "am" );  
102 - public static final Obf serverPort = new Obf("field_71477_af", "an" );  
103 - public static final Obf shaderResourceLocations = new Obf("field_147712_ad", "ab" );  
104 - public static final Obf shaderIndex = new Obf("field_147713_ae", "ac" );  
105 - public static final Obf useShader = new Obf("field_175083_ad", "ad" );  
106 - public static final Obf viewDistance = new Obf("field_149528_b", "b" );  
107 - public static final Obf entityPosY = new Obf("field_70163_u", "t" );  
108 - public static final Obf chatComponent = new Obf("field_148919_a", "a" );  
109 58
110 // Methods 59 // Methods
111 // ----------------------------------------------------------------------------------------- 60 // -----------------------------------------------------------------------------------------
112 - public static final Obf processPacket = new Obf("func_148833_a", "a" );  
113 - public static final Obf runGameLoop = new Obf("func_71411_J", "as" );  
114 - public static final Obf runTick = new Obf("func_71407_l", "r" );  
115 - public static final Obf updateCameraAndRender = new Obf("func_78480_b", "b" );  
116 - public static final Obf renderWorld = new Obf("func_78471_a", "a" );  
117 - public static final Obf renderGameOverlay = new Obf("func_175180_a", "a" ); 61 + public static final Obf startGame = new Obf("func_71384_a", "aj" );
118 public static final Obf startSection = new Obf("func_76320_a", "a" ); 62 public static final Obf startSection = new Obf("func_76320_a", "a" );
119 public static final Obf endSection = new Obf("func_76319_b", "b" ); 63 public static final Obf endSection = new Obf("func_76319_b", "b" );
120 public static final Obf endStartSection = new Obf("func_76318_c", "c" ); 64 public static final Obf endStartSection = new Obf("func_76318_c", "c" );
121 - public static final Obf spawnPlayer = new Obf("func_148545_a", "f" );  
122 - public static final Obf respawnPlayer = new Obf("func_72368_a", "a" );  
123 - public static final Obf initializeConnectionToPlayer = new Obf("func_72355_a", "a" );  
124 - public static final Obf playerLoggedIn = new Obf("func_72377_c", "c" );  
125 - public static final Obf playerLoggedOut = new Obf("func_72367_e", "e" );  
126 - public static final Obf startGame = new Obf("func_71384_a", "aj" );  
127 - public static final Obf startServer = new Obf("func_71197_b", "i" );  
128 - public static final Obf startServerThread = new Obf("func_71256_s", "B" );  
129 - public static final Obf sendChatMessage = new Obf("func_71165_d", "e" );  
130 - public static final Obf updateFramebufferSize = new Obf("func_147119_ah", "av" );  
131 - public static final Obf framebufferRender = new Obf("func_147615_c", "c" );  
132 - public static final Obf framebufferRenderExt = new Obf("func_178038_a", "a" );  
133 - public static final Obf bindFramebufferTexture = new Obf("func_147612_c", "c" );  
134 - public static final Obf drawChat = new Obf("func_146230_a", "a" );  
135 - public static final Obf clear = new Obf("func_179086_m", "m" );  
136 - public static final Obf renderWorldPass = new Obf("func_175068_a", "a" );  
137 - public static final Obf getProfile = new Obf("func_148256_e", "a" );  
138 - public static final Obf saveScreenshot = new Obf("func_148260_a", "a" );  
139 - public static final Obf isFramebufferEnabled = new Obf("func_148822_b", "i" );  
140 - public static final Obf doRenderEntity = new Obf("func_147939_a", "a" );  
141 - public static final Obf doRender = new Obf("func_76986_a", "a" );  
142 - public static final Obf doRenderShadowAndFire = new Obf("func_76979_b", "b" );  
143 - public static final Obf resize = new Obf("func_71370_a", "a" );  
144 - public static final Obf loadShader = new Obf("func_175069_a", "a" );  
145 - public static final Obf getFOVModifier = new Obf("func_78481_a", "a" );  
146 - public static final Obf setupCameraTransform = new Obf("func_78479_a", "a" );  
147 - public static final Obf loadSoundResource = new Obf("func_147693_a", "a" );  
148 - public static final Obf onBlockClicked = new Obf("func_180784_a", "a" );  
149 - public static final Obf activateBlockOrUseItem = new Obf("func_180236_a", "a" );  
150 - public static final Obf processPlayerBlockPlacement = new Obf("func_147346_a", "a" );  
151 - public static final Obf handleAnimation = new Obf("func_175087_a", "a" );  
152 - public static final Obf processPlayerDigging = new Obf("func_147345_a", "a" );  
153 - public static final Obf updateTimeLightAndEntities = new Obf("func_71190_q", "z" );  
154 - public static final Obf checkThreadAndEnqueue = new Obf("func_180031_a", "a" );  
155 - public static final Obf processPlayer = new Obf("func_147347_a", "a" );  
156 - public static final Obf renderSky = new Obf("func_174976_a", "a" );  
157 - public static final Obf renderCloudsCheck = new Obf("func_180437_a", "a" );  
158 - public static final Obf setupFog = new Obf("func_78468_a", "a" ); 65 + public static final Obf processPacket = new Obf("func_148833_a", "a" );
  66 +
  67 + // Legacy
  68 + // -----------------------------------------------------------------------------------------
  69 + @Deprecated public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "btz" );
  70 + @Deprecated public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "uw" );
  71 + @Deprecated public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "cyk" );
  72 + @Deprecated public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "arb" );
  73 + @Deprecated public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "sn" );
  74 + @Deprecated public static final Obf EntityPlayerMP = new Obf("net.minecraft.entity.player.EntityPlayerMP", "qw" );
  75 + @Deprecated public static final Obf NetworkManager = new Obf("net.minecraft.network.NetworkManager", "gr" );
  76 + @Deprecated public static final Obf DedicatedServer = new Obf("net.minecraft.server.dedicated.DedicatedServer", "po" );
  77 + @Deprecated public static final Obf EntityPlayerSP = new Obf("net.minecraft.client.entity.EntityPlayerSP", "cio" );
  78 + @Deprecated public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "ckw" );
  79 + @Deprecated public static final Obf GuiNewChat = new Obf("net.minecraft.client.gui.GuiNewChat", "buh" );
  80 + @Deprecated public static final Obf GlStateManager = new Obf("net.minecraft.client.renderer.GlStateManager", "cjm" );
  81 + @Deprecated public static final Obf Session = new Obf("net.minecraft.util.Session", "btw" );
  82 + @Deprecated public static final Obf IChatComponent = new Obf("net.minecraft.util.IChatComponent", "ho" );
  83 + @Deprecated public static final Obf ScreenShotHelper = new Obf("net.minecraft.util.ScreenShotHelper", "btt" );
  84 + @Deprecated public static final Obf OpenGlHelper = new Obf("net.minecraft.client.renderer.OpenGlHelper", "dax" );
  85 + @Deprecated public static final Obf Entity = new Obf("net.minecraft.entity.Entity", "wv" );
  86 + @Deprecated public static final Obf RenderManager = new Obf("net.minecraft.client.renderer.entity.RenderManager", "cpt" );
  87 + @Deprecated public static final Obf Render = new Obf("net.minecraft.client.renderer.entity.Render", "cpu" );
  88 + @Deprecated public static final Obf GuiTextField = new Obf("net.minecraft.client.gui.GuiTextField", "bul" );
  89 + @Deprecated public static final Obf SoundHandler = new Obf("net.minecraft.client.audio.SoundHandler", "czh" );
  90 + @Deprecated public static final Obf BlockPos = new Obf("net.minecraft.util.BlockPos", "dt" );
  91 + @Deprecated public static final Obf EnumFacing = new Obf("net.minecraft.util.EnumFacing", "ej" );
  92 + @Deprecated public static final Obf ItemInWorldManager = new Obf("net.minecraft.server.management.ItemInWorldManager", "qx" );
  93 + @Deprecated public static final Obf NetHandlerPlayServer = new Obf("net.minecraft.network.NetHandlerPlayServer", "rj" );
  94 + @Deprecated public static final Obf EntityPlayer = new Obf("net.minecraft.entity.player.EntityPlayer", "ahd" );
  95 + @Deprecated public static final Obf World = new Obf("net.minecraft.world.World", "aqu" );
  96 + @Deprecated public static final Obf ItemStack = new Obf("net.minecraft.item.ItemStack", "amj" );
  97 + @Deprecated public static final Obf PacketThreadUtil = new Obf("net.minecraft.network.PacketThreadUtil", "ig" );
  98 + @Deprecated public static final Obf RenderGlobal = new Obf("net.minecraft.client.renderer.RenderGlobal", "ckn" );
  99 + @Deprecated public static final Obf minecraftProfiler = new Obf("field_71424_I", "y" );
  100 + @Deprecated public static final Obf entityRenderMap = new Obf("field_78729_o", "k" );
  101 + @Deprecated public static final Obf reloadListeners = new Obf("field_110546_b", "d" );
  102 + @Deprecated public static final Obf networkManager = new Obf("field_147393_d", "d" );
  103 + @Deprecated public static final Obf registryObjects = new Obf("field_82596_a", "c" );
  104 + @Deprecated public static final Obf underlyingIntegerMap = new Obf("field_148759_a", "a" );
  105 + @Deprecated public static final Obf identityMap = new Obf("field_148749_a", "a" );
  106 + @Deprecated public static final Obf objectList = new Obf("field_148748_b", "b" );
  107 + @Deprecated public static final Obf mapSpecialRenderers = new Obf("field_147559_m", "m" );
  108 + @Deprecated public static final Obf timer = new Obf("field_71428_T", "U" );
  109 + @Deprecated public static final Obf mcProfiler = new Obf("field_71424_I", "y" );
  110 + @Deprecated public static final Obf running = new Obf("field_71425_J", "z" );
  111 + @Deprecated public static final Obf defaultResourcePacks = new Obf("field_110449_ao", "aw" );
  112 + @Deprecated public static final Obf serverName = new Obf("field_71475_ae", "am" );
  113 + @Deprecated public static final Obf serverPort = new Obf("field_71477_af", "an" );
  114 + @Deprecated public static final Obf shaderResourceLocations = new Obf("field_147712_ad", "ab" );
  115 + @Deprecated public static final Obf shaderIndex = new Obf("field_147713_ae", "ac" );
  116 + @Deprecated public static final Obf useShader = new Obf("field_175083_ad", "ad" );
  117 + @Deprecated public static final Obf viewDistance = new Obf("field_149528_b", "b" );
  118 + @Deprecated public static final Obf entityPosY = new Obf("field_70163_u", "t" );
  119 + @Deprecated public static final Obf chatComponent = new Obf("field_148919_a", "a" );
  120 + @Deprecated public static final Obf runGameLoop = new Obf("func_71411_J", "as" );
  121 + @Deprecated public static final Obf runTick = new Obf("func_71407_l", "r" );
  122 + @Deprecated public static final Obf updateCameraAndRender = new Obf("func_78480_b", "b" );
  123 + @Deprecated public static final Obf renderWorld = new Obf("func_78471_a", "a" );
  124 + @Deprecated public static final Obf renderGameOverlay = new Obf("func_175180_a", "a" );
  125 + @Deprecated public static final Obf spawnPlayer = new Obf("func_148545_a", "f" );
  126 + @Deprecated public static final Obf respawnPlayer = new Obf("func_72368_a", "a" );
  127 + @Deprecated public static final Obf initializeConnectionToPlayer = new Obf("func_72355_a", "a" );
  128 + @Deprecated public static final Obf playerLoggedIn = new Obf("func_72377_c", "c" );
  129 + @Deprecated public static final Obf playerLoggedOut = new Obf("func_72367_e", "e" );
  130 + @Deprecated public static final Obf startServer = new Obf("func_71197_b", "i" );
  131 + @Deprecated public static final Obf startServerThread = new Obf("func_71256_s", "B" );
  132 + @Deprecated public static final Obf sendChatMessage = new Obf("func_71165_d", "e" );
  133 + @Deprecated public static final Obf updateFramebufferSize = new Obf("func_147119_ah", "av" );
  134 + @Deprecated public static final Obf framebufferRender = new Obf("func_147615_c", "c" );
  135 + @Deprecated public static final Obf framebufferRenderExt = new Obf("func_178038_a", "a" );
  136 + @Deprecated public static final Obf bindFramebufferTexture = new Obf("func_147612_c", "c" );
  137 + @Deprecated public static final Obf drawChat = new Obf("func_146230_a", "a" );
  138 + @Deprecated public static final Obf clear = new Obf("func_179086_m", "m" );
  139 + @Deprecated public static final Obf renderWorldPass = new Obf("func_175068_a", "a" );
  140 + @Deprecated public static final Obf getProfile = new Obf("func_148256_e", "a" );
  141 + @Deprecated public static final Obf saveScreenshot = new Obf("func_148260_a", "a" );
  142 + @Deprecated public static final Obf isFramebufferEnabled = new Obf("func_148822_b", "i" );
  143 + @Deprecated public static final Obf doRenderEntity = new Obf("func_147939_a", "a" );
  144 + @Deprecated public static final Obf doRender = new Obf("func_76986_a", "a" );
  145 + @Deprecated public static final Obf doRenderShadowAndFire = new Obf("func_76979_b", "b" );
  146 + @Deprecated public static final Obf resize = new Obf("func_71370_a", "a" );
  147 + @Deprecated public static final Obf loadShader = new Obf("func_175069_a", "a" );
  148 + @Deprecated public static final Obf getFOVModifier = new Obf("func_78481_a", "a" );
  149 + @Deprecated public static final Obf setupCameraTransform = new Obf("func_78479_a", "a" );
  150 + @Deprecated public static final Obf loadSoundResource = new Obf("func_147693_a", "a" );
  151 + @Deprecated public static final Obf onBlockClicked = new Obf("func_180784_a", "a" );
  152 + @Deprecated public static final Obf activateBlockOrUseItem = new Obf("func_180236_a", "a" );
  153 + @Deprecated public static final Obf processPlayerBlockPlacement = new Obf("func_147346_a", "a" );
  154 + @Deprecated public static final Obf handleAnimation = new Obf("func_175087_a", "a" );
  155 + @Deprecated public static final Obf processPlayerDigging = new Obf("func_147345_a", "a" );
  156 + @Deprecated public static final Obf updateTimeLightAndEntities = new Obf("func_71190_q", "z" );
  157 + @Deprecated public static final Obf checkThreadAndEnqueue = new Obf("func_180031_a", "a" );
  158 + @Deprecated public static final Obf processPlayer = new Obf("func_147347_a", "a" );
  159 + @Deprecated public static final Obf renderSky = new Obf("func_174976_a", "a" );
  160 + @Deprecated public static final Obf renderCloudsCheck = new Obf("func_180437_a", "a" );
  161 + @Deprecated public static final Obf setupFog = new Obf("func_78468_a", "a" );
  162 +
  163 + // CHECKSTYLE:ON
159 164
160 public static final int MCP = 0; 165 public static final int MCP = 0;
161 public static final int SRG = 1; 166 public static final int SRG = 1;
src/main/java/com/mumfrey/liteloader/launch/LiteLoaderTweaker.java
@@ -10,10 +10,14 @@ import java.util.List; @@ -10,10 +10,14 @@ import java.util.List;
10 import java.util.Set; 10 import java.util.Set;
11 import java.util.TreeSet; 11 import java.util.TreeSet;
12 12
  13 +import org.spongepowered.asm.launch.MixinBootstrap;
  14 +
13 import net.minecraft.launchwrapper.ITweaker; 15 import net.minecraft.launchwrapper.ITweaker;
14 import net.minecraft.launchwrapper.Launch; 16 import net.minecraft.launchwrapper.Launch;
15 import net.minecraft.launchwrapper.LaunchClassLoader; 17 import net.minecraft.launchwrapper.LaunchClassLoader;
16 18
  19 +import com.google.common.base.Preconditions;
  20 +import com.mumfrey.liteloader.launch.LoaderEnvironment.EnvironmentType;
17 import com.mumfrey.liteloader.transformers.event.EventInfo; 21 import com.mumfrey.liteloader.transformers.event.EventInfo;
18 import com.mumfrey.liteloader.util.SortableValue; 22 import com.mumfrey.liteloader.util.SortableValue;
19 import com.mumfrey.liteloader.util.log.LiteLoaderLogger; 23 import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
@@ -231,6 +235,8 @@ public class LiteLoaderTweaker implements ITweaker @@ -231,6 +235,8 @@ public class LiteLoaderTweaker implements ITweaker
231 @Override 235 @Override
232 public void acceptOptions(List<String> args, File gameDirectory, File assetsDirectory, String profile) 236 public void acceptOptions(List<String> args, File gameDirectory, File assetsDirectory, String profile)
233 { 237 {
  238 + LiteLoaderTweaker.injectTweakClass("org.spongepowered.asm.launch.MixinTweaker");
  239 +
234 Launch.classLoader.addClassLoaderExclusion("org.apache."); 240 Launch.classLoader.addClassLoaderExclusion("org.apache.");
235 Launch.classLoader.addClassLoaderExclusion("com.google.common."); 241 Launch.classLoader.addClassLoaderExclusion("com.google.common.");
236 Launch.classLoader.addClassLoaderExclusion("org.objectweb.asm."); 242 Launch.classLoader.addClassLoaderExclusion("org.objectweb.asm.");
@@ -334,6 +340,8 @@ public class LiteLoaderTweaker implements ITweaker @@ -334,6 +340,8 @@ public class LiteLoaderTweaker implements ITweaker
334 340
335 try 341 try
336 { 342 {
  343 + MixinBootstrap.init();
  344 +
337 this.bootstrap.preInit(Launch.classLoader, true, this.env.getModFilterList()); 345 this.bootstrap.preInit(Launch.classLoader, true, this.env.getModFilterList());
338 346
339 this.injectDiscoveredTweakClasses(); 347 this.injectDiscoveredTweakClasses();
@@ -360,6 +368,7 @@ public class LiteLoaderTweaker implements ITweaker @@ -360,6 +368,7 @@ public class LiteLoaderTweaker implements ITweaker
360 { 368 {
361 this.transformerManager.injectDownstreamTransformers(Launch.classLoader); 369 this.transformerManager.injectDownstreamTransformers(Launch.classLoader);
362 this.bootstrap.preBeginGame(); 370 this.bootstrap.preBeginGame();
  371 + MixinBootstrap.addProxy();
363 StartupState.BEGINGAME.completed(); 372 StartupState.BEGINGAME.completed();
364 } 373 }
365 catch (Throwable th) 374 catch (Throwable th)
@@ -437,17 +446,15 @@ public class LiteLoaderTweaker implements ITweaker @@ -437,17 +446,15 @@ public class LiteLoaderTweaker implements ITweaker
437 446
438 LiteLoaderLogger.info("Injecting cascaded tweakers..."); 447 LiteLoaderLogger.info("Injecting cascaded tweakers...");
439 448
440 - @SuppressWarnings("unchecked")  
441 - List<String> tweakClasses = (List<String>)Launch.blackboard.get("TweakClasses");  
442 - @SuppressWarnings("unchecked")  
443 - List<ITweaker> tweakers = (List<ITweaker>)Launch.blackboard.get("Tweaks"); 449 + List<String> tweakClasses = LiteLoaderTweaker.getTweakClasses();
  450 + List<ITweaker> tweakers = LiteLoaderTweaker.getTweakers();
444 if (tweakClasses != null && tweakers != null) 451 if (tweakClasses != null && tweakers != null)
445 { 452 {
446 for (SortableValue<String> tweak : this.sortedCascadingTweaks) 453 for (SortableValue<String> tweak : this.sortedCascadingTweaks)
447 { 454 {
448 String tweakClass = tweak.getValue(); 455 String tweakClass = tweak.getValue();
449 LiteLoaderLogger.info(Verbosity.REDUCED, "Injecting tweak class %s with priority %d", tweakClass, tweak.getPriority()); 456 LiteLoaderLogger.info(Verbosity.REDUCED, "Injecting tweak class %s with priority %d", tweakClass, tweak.getPriority());
450 - this.injectTweakClass(tweakClass, tweakClasses, tweakers); 457 + LiteLoaderTweaker.injectTweakClass(tweakClass, tweakClasses, tweakers);
451 } 458 }
452 } 459 }
453 460
@@ -455,26 +462,36 @@ public class LiteLoaderTweaker implements ITweaker @@ -455,26 +462,36 @@ public class LiteLoaderTweaker implements ITweaker
455 this.sortedCascadingTweaks.clear(); 462 this.sortedCascadingTweaks.clear();
456 } 463 }
457 } 464 }
  465 +
  466 + private static boolean injectTweakClass(String tweakClass)
  467 + {
  468 + List<String> tweakClasses = LiteLoaderTweaker.getTweakClasses();
  469 + List<ITweaker> tweakers = LiteLoaderTweaker.getTweakers();
  470 + return LiteLoaderTweaker.injectTweakClass(tweakClass, tweakClasses, tweakers);
  471 + }
458 472
459 /** 473 /**
460 * @param tweakClass 474 * @param tweakClass
461 * @param tweakClasses 475 * @param tweakClasses
462 * @param tweakers 476 * @param tweakers
463 */ 477 */
464 - private void injectTweakClass(String tweakClass, List<String> tweakClasses, List<ITweaker> tweakers) 478 + private static boolean injectTweakClass(String tweakClass, List<String> tweakClasses, List<ITweaker> tweakers)
465 { 479 {
466 - if (!tweakClasses.contains(tweakClass)) 480 + if (tweakClasses.contains(tweakClass))
  481 + {
  482 + return false;
  483 + }
  484 +
  485 + for (ITweaker existingTweaker : tweakers)
467 { 486 {
468 - for (ITweaker existingTweaker : tweakers) 487 + if (tweakClass.equals(existingTweaker.getClass().getName()))
469 { 488 {
470 - if (tweakClass.equals(existingTweaker.getClass().getName()))  
471 - {  
472 - return;  
473 - } 489 + return false;
474 } 490 }
475 -  
476 - tweakClasses.add(tweakClass);  
477 } 491 }
  492 +
  493 + tweakClasses.add(tweakClass);
  494 + return true;
478 } 495 }
479 496
480 /** 497 /**
@@ -592,11 +609,10 @@ public class LiteLoaderTweaker implements ITweaker @@ -592,11 +609,10 @@ public class LiteLoaderTweaker implements ITweaker
592 /** 609 /**
593 * @param clazz 610 * @param clazz
594 */ 611 */
595 - @SuppressWarnings("unchecked")  
596 private static boolean isTweakAlreadyEnqueued(String clazz) 612 private static boolean isTweakAlreadyEnqueued(String clazz)
597 { 613 {
598 - List<String> tweakClasses = (List<String>)Launch.blackboard.get("TweakClasses");  
599 - List<ITweaker> tweakers = (List<ITweaker>)Launch.blackboard.get("Tweaks"); 614 + List<String> tweakClasses = LiteLoaderTweaker.getTweakClasses();
  615 + List<ITweaker> tweakers = LiteLoaderTweaker.getTweakers();
600 616
601 if (tweakClasses != null) 617 if (tweakClasses != null)
602 { 618 {
@@ -617,6 +633,18 @@ public class LiteLoaderTweaker implements ITweaker @@ -617,6 +633,18 @@ public class LiteLoaderTweaker implements ITweaker
617 return false; 633 return false;
618 } 634 }
619 635
  636 + @SuppressWarnings("unchecked")
  637 + private static List<String> getTweakClasses()
  638 + {
  639 + return Preconditions.<List<String>>checkNotNull((List<String>)Launch.blackboard.get("TweakClasses"), "TweakClasses");
  640 + }
  641 +
  642 + @SuppressWarnings("unchecked")
  643 + private static List<ITweaker> getTweakers()
  644 + {
  645 + return Preconditions.<List<ITweaker>>checkNotNull((List<ITweaker>)Launch.blackboard.get("Tweaks"), "Tweaks");
  646 + }
  647 +
620 /** 648 /**
621 * Get whether to enable the loading bar for minecraft startup 649 * Get whether to enable the loading bar for minecraft startup
622 */ 650 */
@@ -656,4 +684,9 @@ public class LiteLoaderTweaker implements ITweaker @@ -656,4 +684,9 @@ public class LiteLoaderTweaker implements ITweaker
656 LiteLoaderTweaker.instance.onInit(); 684 LiteLoaderTweaker.instance.onInit();
657 LiteLoaderTweaker.instance.onPostInit(); 685 LiteLoaderTweaker.instance.onPostInit();
658 } 686 }
  687 +
  688 + public static EnvironmentType getEnvironmentType()
  689 + {
  690 + return LiteLoaderTweaker.instance.bootstrap.getEnvironment().getType();
  691 + }
659 } 692 }
660 \ No newline at end of file 693 \ No newline at end of file
src/main/java/com/mumfrey/liteloader/transformers/ClassOverlayTransformer.java
@@ -76,7 +76,9 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; @@ -76,7 +76,9 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger;
76 * </ul> 76 * </ul>
77 * 77 *
78 * @author Adam Mummery-Smith 78 * @author Adam Mummery-Smith
  79 + * @deprecated Use mixins instead!
79 */ 80 */
  81 +@Deprecated
80 public abstract class ClassOverlayTransformer extends ClassTransformer 82 public abstract class ClassOverlayTransformer extends ClassTransformer
81 { 83 {
82 /** 84 /**
src/main/java/com/mumfrey/liteloader/transformers/event/Event.java
@@ -42,6 +42,11 @@ public class Event implements Comparable&lt;Event&gt; @@ -42,6 +42,11 @@ public class Event implements Comparable&lt;Event&gt;
42 private static final List<Map<MethodNode, List<Event>>> proxyHandlerMethods = new ArrayList<Map<MethodNode, List<Event>>>(); 42 private static final List<Map<MethodNode, List<Event>>> proxyHandlerMethods = new ArrayList<Map<MethodNode, List<Event>>>();
43 43
44 private static int proxyInnerClassIndex = 1; 44 private static int proxyInnerClassIndex = 1;
  45 +
  46 + static
  47 + {
  48 + Event.resizeProxyList();
  49 + }
45 50
46 /** 51 /**
47 * The name of this event 52 * The name of this event
@@ -657,16 +662,21 @@ public class Event implements Comparable&lt;Event&gt; @@ -657,16 +662,21 @@ public class Event implements Comparable&lt;Event&gt;
657 662
658 private static List<Event> addMethodToActiveProxy(MethodNode handlerMethod) 663 private static List<Event> addMethodToActiveProxy(MethodNode handlerMethod)
659 { 664 {
660 - while (Event.proxyHandlerMethods.size() < Event.proxyInnerClassIndex + 1)  
661 - {  
662 - Event.proxyHandlerMethods.add(new LinkedHashMap<MethodNode, List<Event>>());  
663 - } 665 + Event.resizeProxyList();
664 666
665 ArrayList<Event> events = new ArrayList<Event>(); 667 ArrayList<Event> events = new ArrayList<Event>();
666 Event.proxyHandlerMethods.get(Event.proxyInnerClassIndex).put(handlerMethod, events); 668 Event.proxyHandlerMethods.get(Event.proxyInnerClassIndex).put(handlerMethod, events);
667 return events; 669 return events;
668 } 670 }
669 671
  672 + private static void resizeProxyList()
  673 + {
  674 + while (Event.proxyHandlerMethods.size() < Event.proxyInnerClassIndex + 1)
  675 + {
  676 + Event.proxyHandlerMethods.add(new LinkedHashMap<MethodNode, List<Event>>());
  677 + }
  678 + }
  679 +
670 private static List<Event> getEventsForHandlerMethod(MethodNode handlerMethod) 680 private static List<Event> getEventsForHandlerMethod(MethodNode handlerMethod)
671 { 681 {
672 for (Map<MethodNode, List<Event>> handlers : Event.proxyHandlerMethods) 682 for (Map<MethodNode, List<Event>> handlers : Event.proxyHandlerMethods)
src/main/java/com/mumfrey/liteloader/util/ObfuscationUtilities.java
@@ -14,25 +14,14 @@ public class ObfuscationUtilities @@ -14,25 +14,14 @@ public class ObfuscationUtilities
14 * raw field/method names. 14 * raw field/method names.
15 */ 15 */
16 private static boolean fmlDetected = false; 16 private static boolean fmlDetected = false;
17 - 17 +
  18 + private static boolean checkedObfEnv = false;
18 private static boolean seargeNames = false; 19 private static boolean seargeNames = false;
19 20
20 static 21 static
21 { 22 {
22 // Check for FML 23 // Check for FML
23 ObfuscationUtilities.fmlDetected = ObfuscationUtilities.fmlIsPresent(); 24 ObfuscationUtilities.fmlDetected = ObfuscationUtilities.fmlIsPresent();
24 -  
25 - try  
26 - {  
27 - MinecraftServer.class.getDeclaredField("serverRunning");  
28 - }  
29 - catch (SecurityException ex)  
30 - {  
31 - }  
32 - catch (NoSuchFieldException ex)  
33 - {  
34 - ObfuscationUtilities.seargeNames = true;  
35 - }  
36 } 25 }
37 26
38 public static boolean fmlIsPresent() 27 public static boolean fmlIsPresent()
@@ -47,6 +36,28 @@ public class ObfuscationUtilities @@ -47,6 +36,28 @@ public class ObfuscationUtilities
47 36
48 return false; 37 return false;
49 } 38 }
  39 +
  40 + public static boolean useSeargeNames()
  41 + {
  42 + if (!ObfuscationUtilities.checkedObfEnv)
  43 + {
  44 + ObfuscationUtilities.checkedObfEnv = true;
  45 +
  46 + try
  47 + {
  48 + MinecraftServer.class.getDeclaredField("serverRunning");
  49 + }
  50 + catch (SecurityException ex)
  51 + {
  52 + }
  53 + catch (NoSuchFieldException ex)
  54 + {
  55 + ObfuscationUtilities.seargeNames = true;
  56 + }
  57 + }
  58 +
  59 + return ObfuscationUtilities.seargeNames;
  60 + }
50 61
51 /** 62 /**
52 * Abstraction helper function 63 * Abstraction helper function
@@ -58,7 +69,7 @@ public class ObfuscationUtilities @@ -58,7 +69,7 @@ public class ObfuscationUtilities
58 public static String getObfuscatedFieldName(String fieldName, String obfuscatedFieldName, String seargeFieldName) 69 public static String getObfuscatedFieldName(String fieldName, String obfuscatedFieldName, String seargeFieldName)
59 { 70 {
60 boolean deobfuscated = BlockPos.class.getSimpleName().equals("BlockPos"); 71 boolean deobfuscated = BlockPos.class.getSimpleName().equals("BlockPos");
61 - return deobfuscated ? (ObfuscationUtilities.seargeNames ? seargeFieldName : fieldName) 72 + return deobfuscated ? (ObfuscationUtilities.useSeargeNames() ? seargeFieldName : fieldName)
62 : (ObfuscationUtilities.fmlDetected ? seargeFieldName : obfuscatedFieldName); 73 : (ObfuscationUtilities.fmlDetected ? seargeFieldName : obfuscatedFieldName);
63 } 74 }
64 75
@@ -71,6 +82,6 @@ public class ObfuscationUtilities @@ -71,6 +82,6 @@ public class ObfuscationUtilities
71 public static String getObfuscatedFieldName(Obf obf) 82 public static String getObfuscatedFieldName(Obf obf)
72 { 83 {
73 boolean deobfuscated = BlockPos.class.getSimpleName().equals("BlockPos"); 84 boolean deobfuscated = BlockPos.class.getSimpleName().equals("BlockPos");
74 - return deobfuscated ? (ObfuscationUtilities.seargeNames ? obf.srg : obf.name) : (ObfuscationUtilities.fmlDetected ? obf.srg : obf.obf); 85 + return deobfuscated ? (ObfuscationUtilities.useSeargeNames() ? obf.srg : obf.name) : (ObfuscationUtilities.fmlDetected ? obf.srg : obf.obf);
75 } 86 }
76 } 87 }
src/main/java/com/mumfrey/liteloader/util/PrivateFields.java
@@ -3,8 +3,6 @@ package com.mumfrey.liteloader.util; @@ -3,8 +3,6 @@ package com.mumfrey.liteloader.util;
3 import java.lang.reflect.Field; 3 import java.lang.reflect.Field;
4 import java.lang.reflect.Modifier; 4 import java.lang.reflect.Modifier;
5 5
6 -import net.minecraft.network.play.client.C15PacketClientSettings;  
7 -  
8 import com.mumfrey.liteloader.core.runtime.Obf; 6 import com.mumfrey.liteloader.core.runtime.Obf;
9 7
10 /** 8 /**
@@ -124,9 +122,4 @@ public class PrivateFields&lt;P, T&gt; @@ -124,9 +122,4 @@ public class PrivateFields&lt;P, T&gt;
124 122
125 return value; 123 return value;
126 } 124 }
127 -  
128 - // CHECKSTYLE:OFF  
129 -  
130 - public static final PrivateFields<C15PacketClientSettings, Integer> viewDistance = new PrivateFields<C15PacketClientSettings, Integer>(C15PacketClientSettings.class, Obf.viewDistance);  
131 -  
132 } 125 }
133 \ No newline at end of file 126 \ No newline at end of file
src/main/resources/mixins.liteloader.core.json 0 → 100644
  1 +{
  2 + "required": true,
  3 + "minVersion": "0.4.10",
  4 + "package": "com.mumfrey.liteloader.common.mixin",
  5 + "refmap": "mixins.liteloader.core.refmap.json",
  6 + "mixins": [
  7 + "MixinMinecraftServer",
  8 + "MixinServerConfigurationManager",
  9 + "MixinNetHandlerPlayServer",
  10 + "MixinItemInWorldManager",
  11 + "MixinC15PacketClientSettings",
  12 + "MixinS02PacketChat"
  13 + ]
  14 +}
0 \ No newline at end of file 15 \ No newline at end of file