Commit ebb3c2be879520fd607b4a7f2763bf7536b7468c
The great style update
Showing
33 changed files
with
2401 additions
and
2203 deletions
Too many changes to show.
To preserve performance only 33 of 282 files are displayed.
build.gradle
@@ -17,6 +17,7 @@ buildscript { | @@ -17,6 +17,7 @@ buildscript { | ||
17 | } | 17 | } |
18 | 18 | ||
19 | apply plugin: 'net.minecraftforge.gradle.tweaker-client' | 19 | apply plugin: 'net.minecraftforge.gradle.tweaker-client' |
20 | +apply plugin: 'checkstyle' | ||
20 | apply plugin: 'maven' | 21 | apply plugin: 'maven' |
21 | 22 | ||
22 | // Artefact details | 23 | // Artefact details |
@@ -60,6 +61,17 @@ sourceSets { | @@ -60,6 +61,17 @@ sourceSets { | ||
60 | } | 61 | } |
61 | } | 62 | } |
62 | 63 | ||
64 | +checkstyle { | ||
65 | + configProperties = [ | ||
66 | + "name" : project.name, | ||
67 | + "organization": project.organization, | ||
68 | + "url" : project.url, | ||
69 | + "year" : project.inceptionYear | ||
70 | + ] | ||
71 | + configFile = file("checkstyle.xml") | ||
72 | + toolVersion = '6.13' | ||
73 | +} | ||
74 | + | ||
63 | javadoc { | 75 | javadoc { |
64 | source sourceSets.client.allJava | 76 | source sourceSets.client.allJava |
65 | source sourceSets.debug.allJava | 77 | source sourceSets.debug.allJava |
@@ -110,7 +122,7 @@ task runClient(type: JavaExec, overwrite: true) { | @@ -110,7 +122,7 @@ task runClient(type: JavaExec, overwrite: true) { | ||
110 | } | 122 | } |
111 | 123 | ||
112 | tasks.withType(JavaCompile) { | 124 | tasks.withType(JavaCompile) { |
113 | - options.compilerArgs += ['-Xlint:all', '-Xlint:-path'] | 125 | + options.compilerArgs += ['-Xlint:all', '-Xlint:-path', '-Xlint:-rawtypes'] |
114 | options.deprecation = true | 126 | options.deprecation = true |
115 | options.encoding = 'utf8' | 127 | options.encoding = 'utf8' |
116 | } | 128 | } |
checkstyle.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> | ||
3 | + | ||
4 | +<!-- | ||
5 | + This configuration file was written by the eclipse-cs plugin configuration editor | ||
6 | +--> | ||
7 | +<!-- | ||
8 | + Checkstyle-Configuration: LiteLoader Style | ||
9 | + Description: none | ||
10 | +--> | ||
11 | +<module name="Checker"> | ||
12 | + <property name="severity" value="warning"/> | ||
13 | + <property name="charset" value="UTF-8"/> | ||
14 | + <module name="TreeWalker"> | ||
15 | + <module name="FileContentsHolder"/> | ||
16 | + <module name="OuterTypeFilename"/> | ||
17 | + <module name="IllegalTokenText"> | ||
18 | + <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/> | ||
19 | + <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/> | ||
20 | + <property name="message" value="Avoid using corresponding octal or Unicode escape."/> | ||
21 | + </module> | ||
22 | + <module name="EmptyBlock"> | ||
23 | + <property name="option" value="TEXT"/> | ||
24 | + <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/> | ||
25 | + </module> | ||
26 | + <module name="ArrayTypeStyle"/> | ||
27 | + <module name="MissingSwitchDefault"/> | ||
28 | + <module name="FallThrough"/> | ||
29 | + <module name="UpperEll"/> | ||
30 | + <module name="ModifierOrder"/> | ||
31 | + <module name="PackageName"> | ||
32 | + <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/> | ||
33 | + <message key="name.invalidPattern" value="Package name ''{0}'' must match pattern ''{1}''."/> | ||
34 | + </module> | ||
35 | + <module name="TypeName"> | ||
36 | + <message key="name.invalidPattern" value="Type name ''{0}'' must match pattern ''{1}''."/> | ||
37 | + </module> | ||
38 | + <module name="MemberName"> | ||
39 | + <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/> | ||
40 | + <message key="name.invalidPattern" value="Member name ''{0}'' must match pattern ''{1}''."/> | ||
41 | + </module> | ||
42 | + <module name="ParameterName"> | ||
43 | + <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/> | ||
44 | + <message key="name.invalidPattern" value="Parameter name ''{0}'' must match pattern ''{1}''."/> | ||
45 | + </module> | ||
46 | + <module name="LocalVariableName"> | ||
47 | + <property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/> | ||
48 | + <property name="tokens" value="VARIABLE_DEF"/> | ||
49 | + <message key="name.invalidPattern" value="Local variable name ''{0}'' must match pattern ''{1}''."/> | ||
50 | + </module> | ||
51 | + <module name="ClassTypeParameterName"> | ||
52 | + <property name="format" value="(^[A-Z][0-9]?)$|(T[A-Z][a-zA-Z0-9]*$)"/> | ||
53 | + <message key="name.invalidPattern" value="Class type name ''{0}'' must match pattern ''{1}''."/> | ||
54 | + </module> | ||
55 | + <module name="MethodTypeParameterName"> | ||
56 | + <property name="format" value="(^[A-Z][0-9]?)$|(T[A-Z][a-zA-Z0-9]*$)"/> | ||
57 | + <message key="name.invalidPattern" value="Method type name ''{0}'' must match pattern ''{1}''."/> | ||
58 | + </module> | ||
59 | + <module name="NoFinalizer"/> | ||
60 | + <module name="OperatorWrap"> | ||
61 | + <property name="option" value="NL"/> | ||
62 | + <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/> | ||
63 | + </module> | ||
64 | + <module name="RequireThis"/> | ||
65 | + <module name="EqualsHashCode"/> | ||
66 | + <module name="LeftCurly"> | ||
67 | + <property name="option" value="nl"/> | ||
68 | + </module> | ||
69 | + <module name="MethodParamPad"> | ||
70 | + <property name="allowLineBreaks" value="true"/> | ||
71 | + <property name="tokens" value="CTOR_DEF,METHOD_CALL,METHOD_DEF,SUPER_CTOR_CALL"/> | ||
72 | + </module> | ||
73 | + <module name="LineLength"> | ||
74 | + <metadata name="net.sf.eclipsecs.core.comment" value="Code line length"/> | ||
75 | + <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/> | ||
76 | + <property name="max" value="150"/> | ||
77 | + <message key="maxLineLen" value="Code line is longer than {0,number,integer} characters (found {1,number,integer})."/> | ||
78 | + </module> | ||
79 | + <module name="LineLength"> | ||
80 | + <metadata name="net.sf.eclipsecs.core.comment" value="Comment line length"/> | ||
81 | + <property name="ignorePattern" value="^[ ]*([a-zA-Z0-9\{\}\+\|\&\"@\(\)\?\:\.=]|//)"/> | ||
82 | + <message key="maxLineLen" value="Comment line is longer than {0,number,integer} characters (found {1,number,integer})."/> | ||
83 | + </module> | ||
84 | + <module name="NeedBraces"> | ||
85 | + <property name="allowSingleLineStatement" value="true"/> | ||
86 | + <message key="needBraces" value="''{0}'' must use '''{}'''s."/> | ||
87 | + </module> | ||
88 | + <module name="RightCurly"> | ||
89 | + <property name="option" value="alone"/> | ||
90 | + <property name="tokens" value="LITERAL_TRY,LITERAL_CATCH,LITERAL_FINALLY,LITERAL_IF,LITERAL_ELSE,CLASS_DEF,METHOD_DEF,CTOR_DEF,LITERAL_FOR,LITERAL_WHILE,LITERAL_DO,STATIC_INIT,INSTANCE_INIT"/> | ||
91 | + <property name="shouldStartLine" value="false"/> | ||
92 | + </module> | ||
93 | + <module name="MissingOverride"> | ||
94 | + <property name="severity" value="error"/> | ||
95 | + </module> | ||
96 | + <module name="MissingDeprecated"> | ||
97 | + <property name="severity" value="warning"/> | ||
98 | + </module> | ||
99 | + <module name="TypecastParenPad"> | ||
100 | + <property name="tokens" value="RPAREN,TYPECAST"/> | ||
101 | + </module> | ||
102 | + <module name="DefaultComesLast"/> | ||
103 | + <module name="EmptyStatement"/> | ||
104 | + <module name="EqualsAvoidNull"/> | ||
105 | + <module name="StringLiteralEquality"/> | ||
106 | + <module name="FinalClass"/> | ||
107 | + </module> | ||
108 | + <module name="SuppressionCommentFilter"/> | ||
109 | +</module> |
src/client/java/com/mumfrey/liteloader/ChatFilter.java
@@ -12,14 +12,16 @@ import net.minecraft.util.IChatComponent; | @@ -12,14 +12,16 @@ import net.minecraft.util.IChatComponent; | ||
12 | */ | 12 | */ |
13 | public interface ChatFilter extends LiteMod | 13 | public interface ChatFilter extends LiteMod |
14 | { | 14 | { |
15 | - /** | ||
16 | - * Chat filter function, return false to filter this packet, true to pass the packet | ||
17 | - * | ||
18 | - * @param chat ChatMessageComponent parsed from the chat packet | ||
19 | - * @param message Chat message parsed from the chat message component | ||
20 | - * @param newMessage If you wish to mutate the message, set the value using newMessage.set() | ||
21 | - * | ||
22 | - * @return True to keep the packet, false to discard | ||
23 | - */ | ||
24 | - public abstract boolean onChat(IChatComponent chat, String message, ReturnValue<IChatComponent> newMessage); | 15 | + /** |
16 | + * Chat filter function, return false to filter this packet, true to pass | ||
17 | + * the packet. | ||
18 | + * | ||
19 | + * @param chat ChatMessageComponent parsed from the chat packet | ||
20 | + * @param message Chat message parsed from the chat message component | ||
21 | + * @param newMessage If you wish to mutate the message, set the value using | ||
22 | + * newMessage.set() | ||
23 | + * | ||
24 | + * @return True to keep the packet, false to discard | ||
25 | + */ | ||
26 | + public abstract boolean onChat(IChatComponent chat, String message, ReturnValue<IChatComponent> newMessage); | ||
25 | } | 27 | } |
src/client/java/com/mumfrey/liteloader/ChatListener.java
@@ -10,11 +10,11 @@ import net.minecraft.util.IChatComponent; | @@ -10,11 +10,11 @@ import net.minecraft.util.IChatComponent; | ||
10 | */ | 10 | */ |
11 | public interface ChatListener extends LiteMod | 11 | public interface ChatListener extends LiteMod |
12 | { | 12 | { |
13 | - /** | ||
14 | - * Handle an inbound message | ||
15 | - * | ||
16 | - * @param chat IChatComponent parsed from the chat packet | ||
17 | - * @param message Chat message parsed from the chat message component | ||
18 | - */ | ||
19 | - public abstract void onChat(IChatComponent chat, String message); | 13 | + /** |
14 | + * Handle an inbound message | ||
15 | + * | ||
16 | + * @param chat IChatComponent parsed from the chat packet | ||
17 | + * @param message Chat message parsed from the chat message component | ||
18 | + */ | ||
19 | + public abstract void onChat(IChatComponent chat, String message); | ||
20 | } | 20 | } |
src/client/java/com/mumfrey/liteloader/ChatRenderListener.java
@@ -9,7 +9,7 @@ import net.minecraft.client.gui.GuiNewChat; | @@ -9,7 +9,7 @@ import net.minecraft.client.gui.GuiNewChat; | ||
9 | */ | 9 | */ |
10 | public interface ChatRenderListener extends LiteMod | 10 | public interface ChatRenderListener extends LiteMod |
11 | { | 11 | { |
12 | - public abstract void onPreRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | ||
13 | - | ||
14 | - public abstract void onPostRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | 12 | + public abstract void onPreRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); |
13 | + | ||
14 | + public abstract void onPostRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | ||
15 | } | 15 | } |
src/client/java/com/mumfrey/liteloader/EntityRenderListener.java
@@ -4,35 +4,36 @@ import net.minecraft.client.renderer.entity.Render; | @@ -4,35 +4,36 @@ import net.minecraft.client.renderer.entity.Render; | ||
4 | import net.minecraft.entity.Entity; | 4 | import net.minecraft.entity.Entity; |
5 | 5 | ||
6 | /** | 6 | /** |
7 | - * Interface for mods which want to receive callbacks when entities are rendered into the world | 7 | + * Interface for mods which want to receive callbacks when entities are rendered |
8 | + * into the world. | ||
8 | * | 9 | * |
9 | * @author Adam Mummery-Smith | 10 | * @author Adam Mummery-Smith |
10 | */ | 11 | */ |
11 | public interface EntityRenderListener extends LiteMod | 12 | public interface EntityRenderListener extends LiteMod |
12 | { | 13 | { |
13 | - /** | ||
14 | - * Called immediately prior to an entity being rendered | ||
15 | - * | ||
16 | - * @param render | ||
17 | - * @param entity | ||
18 | - * @param xPos | ||
19 | - * @param yPos | ||
20 | - * @param zPos | ||
21 | - * @param yaw | ||
22 | - * @param partialTicks | ||
23 | - */ | ||
24 | - public abstract void onRenderEntity(Render render, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks); | 14 | + /** |
15 | + * Called immediately prior to an entity being rendered | ||
16 | + * | ||
17 | + * @param render | ||
18 | + * @param entity | ||
19 | + * @param xPos | ||
20 | + * @param yPos | ||
21 | + * @param zPos | ||
22 | + * @param yaw | ||
23 | + * @param partialTicks | ||
24 | + */ | ||
25 | + public abstract void onRenderEntity(Render render, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks); | ||
25 | 26 | ||
26 | - /** | ||
27 | - * Called immediately following an entity being rendered | ||
28 | - * | ||
29 | - * @param render | ||
30 | - * @param entity | ||
31 | - * @param xPos | ||
32 | - * @param yPos | ||
33 | - * @param zPos | ||
34 | - * @param yaw | ||
35 | - * @param partialTicks | ||
36 | - */ | ||
37 | - public abstract void onPostRenderEntity(Render render, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks); | 27 | + /** |
28 | + * Called immediately following an entity being rendered | ||
29 | + * | ||
30 | + * @param render | ||
31 | + * @param entity | ||
32 | + * @param xPos | ||
33 | + * @param yPos | ||
34 | + * @param zPos | ||
35 | + * @param yaw | ||
36 | + * @param partialTicks | ||
37 | + */ | ||
38 | + public abstract void onPostRenderEntity(Render render, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks); | ||
38 | } | 39 | } |
src/client/java/com/mumfrey/liteloader/FrameBufferListener.java
@@ -3,29 +3,32 @@ package com.mumfrey.liteloader; | @@ -3,29 +3,32 @@ package com.mumfrey.liteloader; | ||
3 | import net.minecraft.client.shader.Framebuffer; | 3 | import net.minecraft.client.shader.Framebuffer; |
4 | 4 | ||
5 | /** | 5 | /** |
6 | - * Interface for mods which want to interact with Minecraft's main Frame Buffer Object | 6 | + * Interface for mods which want to interact with Minecraft's main Frame Buffer |
7 | + * Object. | ||
7 | * | 8 | * |
8 | * @author Adam Mummery-Smith | 9 | * @author Adam Mummery-Smith |
9 | */ | 10 | */ |
10 | public interface FrameBufferListener extends LiteMod | 11 | public interface FrameBufferListener extends LiteMod |
11 | { | 12 | { |
12 | - /** | ||
13 | - * Called before the FBO is rendered. Useful if you want to interact with the FBO before it is drawn to the screen | ||
14 | - */ | ||
15 | - public abstract void preRenderFBO(Framebuffer fbo); | ||
16 | - | ||
17 | - /** | ||
18 | - * Called immediately before the FBO is rendered to the screen, after the appropriate IGL modes and matrix transforms | ||
19 | - * have been set but before the FBO is actually rendered into the main output buffer. | ||
20 | - * | ||
21 | - * @param fbo FBO instance | ||
22 | - * @param width FBO width | ||
23 | - * @param height FBO height | ||
24 | - */ | ||
25 | - public abstract void onRenderFBO(Framebuffer fbo, int width, int height); | 13 | + /** |
14 | + * Called before the FBO is rendered. Useful if you want to interact with | ||
15 | + * the FBO before it is drawn to the screen. | ||
16 | + */ | ||
17 | + public abstract void preRenderFBO(Framebuffer fbo); | ||
26 | 18 | ||
27 | - /** | ||
28 | - * Called after the FBO is rendered whilst still inside the FBO transform | ||
29 | - */ | ||
30 | - public abstract void postRenderFBO(Framebuffer fbo); | 19 | + /** |
20 | + * Called immediately before the FBO is rendered to the screen, after the | ||
21 | + * appropriate IGL modes and matrix transforms have been set but before the | ||
22 | + * FBO is actually rendered into the main output buffer. | ||
23 | + * | ||
24 | + * @param fbo FBO instance | ||
25 | + * @param width FBO width | ||
26 | + * @param height FBO height | ||
27 | + */ | ||
28 | + public abstract void onRenderFBO(Framebuffer fbo, int width, int height); | ||
29 | + | ||
30 | + /** | ||
31 | + * Called after the FBO is rendered whilst still inside the FBO transform | ||
32 | + */ | ||
33 | + public abstract void postRenderFBO(Framebuffer fbo); | ||
31 | } | 34 | } |
src/client/java/com/mumfrey/liteloader/GameLoopListener.java
@@ -9,10 +9,10 @@ import net.minecraft.client.Minecraft; | @@ -9,10 +9,10 @@ import net.minecraft.client.Minecraft; | ||
9 | */ | 9 | */ |
10 | public interface GameLoopListener extends LiteMod | 10 | public interface GameLoopListener extends LiteMod |
11 | { | 11 | { |
12 | - /** | ||
13 | - * Called every frame, before the world is ticked | ||
14 | - * | ||
15 | - * @param minecraft | ||
16 | - */ | ||
17 | - public abstract void onRunGameLoop(Minecraft minecraft); | 12 | + /** |
13 | + * Called every frame, before the world is ticked | ||
14 | + * | ||
15 | + * @param minecraft | ||
16 | + */ | ||
17 | + public abstract void onRunGameLoop(Minecraft minecraft); | ||
18 | } | 18 | } |
src/client/java/com/mumfrey/liteloader/HUDRenderListener.java
@@ -7,7 +7,7 @@ package com.mumfrey.liteloader; | @@ -7,7 +7,7 @@ package com.mumfrey.liteloader; | ||
7 | */ | 7 | */ |
8 | public interface HUDRenderListener extends LiteMod | 8 | public interface HUDRenderListener extends LiteMod |
9 | { | 9 | { |
10 | - public abstract void onPreRenderHUD(int screenWidth, int screenHeight); | ||
11 | - | ||
12 | - public abstract void onPostRenderHUD(int screenWidth, int screenHeight); | 10 | + public abstract void onPreRenderHUD(int screenWidth, int screenHeight); |
11 | + | ||
12 | + public abstract void onPostRenderHUD(int screenWidth, int screenHeight); | ||
13 | } | 13 | } |
src/client/java/com/mumfrey/liteloader/InitCompleteListener.java
@@ -5,18 +5,20 @@ import net.minecraft.client.Minecraft; | @@ -5,18 +5,20 @@ import net.minecraft.client.Minecraft; | ||
5 | import com.mumfrey.liteloader.core.LiteLoader; | 5 | import com.mumfrey.liteloader.core.LiteLoader; |
6 | 6 | ||
7 | /** | 7 | /** |
8 | - * Interface for mods which need to initialise stuff once the game initialisation is completed, | ||
9 | - * for example mods which need to register new renderers. | 8 | + * Interface for mods which need to initialise stuff once the game |
9 | + * initialisation is completed, for example mods which need to register new | ||
10 | + * renderers. | ||
10 | * | 11 | * |
11 | * @author Adam Mummery-Smith | 12 | * @author Adam Mummery-Smith |
12 | */ | 13 | */ |
13 | public interface InitCompleteListener extends Tickable | 14 | public interface InitCompleteListener extends Tickable |
14 | { | 15 | { |
15 | - /** | ||
16 | - * Called as soon as the game is initialised and the main game loop is running | ||
17 | - * | ||
18 | - * @param minecraft Minecraft instance | ||
19 | - * @param loader LiteLoader instance | ||
20 | - */ | ||
21 | - public abstract void onInitCompleted(Minecraft minecraft, LiteLoader loader); | 16 | + /** |
17 | + * Called as soon as the game is initialised and the main game loop is | ||
18 | + * running. | ||
19 | + * | ||
20 | + * @param minecraft Minecraft instance | ||
21 | + * @param loader LiteLoader instance | ||
22 | + */ | ||
23 | + public abstract void onInitCompleted(Minecraft minecraft, LiteLoader loader); | ||
22 | } | 24 | } |
src/client/java/com/mumfrey/liteloader/JoinGameListener.java
@@ -8,19 +8,22 @@ import com.mojang.realmsclient.dto.RealmsServer; | @@ -8,19 +8,22 @@ import com.mojang.realmsclient.dto.RealmsServer; | ||
8 | 8 | ||
9 | 9 | ||
10 | /** | 10 | /** |
11 | - * Interface for mods which wish to be notified when the player connects to a server (or local game) | 11 | + * Interface for mods which wish to be notified when the player connects to a |
12 | + * server (or local game). | ||
12 | * | 13 | * |
13 | * @author Adam Mummery-Smith | 14 | * @author Adam Mummery-Smith |
14 | */ | 15 | */ |
15 | public interface JoinGameListener extends LiteMod | 16 | public interface JoinGameListener extends LiteMod |
16 | { | 17 | { |
17 | - /** | ||
18 | - * Called on join game | ||
19 | - * | ||
20 | - * @param netHandler Net handler | ||
21 | - * @param joinGamePacket Join game packet | ||
22 | - * @param serverData ServerData object representing the server being connected to | ||
23 | - * @param realmsServer If connecting to a realm, a reference to the RealmsServer object | ||
24 | - */ | ||
25 | - public abstract void onJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket, ServerData serverData, RealmsServer realmsServer); | 18 | + /** |
19 | + * Called on join game | ||
20 | + * | ||
21 | + * @param netHandler Net handler | ||
22 | + * @param joinGamePacket Join game packet | ||
23 | + * @param serverData ServerData object representing the server being | ||
24 | + * connected to | ||
25 | + * @param realmsServer If connecting to a realm, a reference to the | ||
26 | + * RealmsServer object | ||
27 | + */ | ||
28 | + public abstract void onJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket, ServerData serverData, RealmsServer realmsServer); | ||
26 | } | 29 | } |
src/client/java/com/mumfrey/liteloader/OutboundChatFilter.java
@@ -7,10 +7,11 @@ package com.mumfrey.liteloader; | @@ -7,10 +7,11 @@ package com.mumfrey.liteloader; | ||
7 | */ | 7 | */ |
8 | public interface OutboundChatFilter extends LiteMod | 8 | public interface OutboundChatFilter extends LiteMod |
9 | { | 9 | { |
10 | - /** | ||
11 | - * Raised when a chat message is being sent, return false to filter this message or true to allow it to be sent | ||
12 | - * | ||
13 | - * @param message | ||
14 | - */ | ||
15 | - public abstract boolean onSendChatMessage(String message); | 10 | + /** |
11 | + * Raised when a chat message is being sent, return false to filter this | ||
12 | + * message or true to allow it to be sent. | ||
13 | + * | ||
14 | + * @param message | ||
15 | + */ | ||
16 | + public abstract boolean onSendChatMessage(String message); | ||
16 | } | 17 | } |
src/client/java/com/mumfrey/liteloader/OutboundChatListener.java
@@ -9,11 +9,12 @@ import net.minecraft.network.play.client.C01PacketChatMessage; | @@ -9,11 +9,12 @@ import net.minecraft.network.play.client.C01PacketChatMessage; | ||
9 | */ | 9 | */ |
10 | public interface OutboundChatListener extends LiteMod | 10 | public interface OutboundChatListener extends LiteMod |
11 | { | 11 | { |
12 | - /** | ||
13 | - * Raised when a new chat packet is created (not necessarily transmitted, something could be trolling us) | ||
14 | - * | ||
15 | - * @param packet | ||
16 | - * @param message | ||
17 | - */ | ||
18 | - public abstract void onSendChatMessage(C01PacketChatMessage packet, String message); | 12 | + /** |
13 | + * Raised when a new chat packet is created (not necessarily transmitted, | ||
14 | + * something could be trolling us). | ||
15 | + * | ||
16 | + * @param packet | ||
17 | + * @param message | ||
18 | + */ | ||
19 | + public abstract void onSendChatMessage(C01PacketChatMessage packet, String message); | ||
19 | } | 20 | } |
src/client/java/com/mumfrey/liteloader/PostLoginListener.java
@@ -9,12 +9,13 @@ import net.minecraft.network.login.server.S02PacketLoginSuccess; | @@ -9,12 +9,13 @@ import net.minecraft.network.login.server.S02PacketLoginSuccess; | ||
9 | */ | 9 | */ |
10 | public interface PostLoginListener extends LiteMod | 10 | public interface PostLoginListener extends LiteMod |
11 | { | 11 | { |
12 | - /** | ||
13 | - * Called immediately after login, before the player has properly joined the game. Note that this event is raised | ||
14 | - * <b>in the network thread</b> and is not marshalled to the main thread as other packet-generated events are. | ||
15 | - * | ||
16 | - * @param netHandler | ||
17 | - * @param packet | ||
18 | - */ | ||
19 | - public abstract void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess packet); | 12 | + /** |
13 | + * Called immediately after login, before the player has properly joined the | ||
14 | + * game. Note that this event is raised <b>in the network thread</b> and is | ||
15 | + * not marshalled to the main thread as other packet-generated events are. | ||
16 | + * | ||
17 | + * @param netHandler | ||
18 | + * @param packet | ||
19 | + */ | ||
20 | + public abstract void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess packet); | ||
20 | } | 21 | } |
src/client/java/com/mumfrey/liteloader/PostRenderListener.java
@@ -7,17 +7,17 @@ package com.mumfrey.liteloader; | @@ -7,17 +7,17 @@ package com.mumfrey.liteloader; | ||
7 | */ | 7 | */ |
8 | public interface PostRenderListener extends LiteMod | 8 | public interface PostRenderListener extends LiteMod |
9 | { | 9 | { |
10 | - /** | ||
11 | - * Called after entities are rendered but before particles | ||
12 | - * | ||
13 | - * @param partialTicks | ||
14 | - */ | ||
15 | - public abstract void onPostRenderEntities(float partialTicks); | 10 | + /** |
11 | + * Called after entities are rendered but before particles | ||
12 | + * | ||
13 | + * @param partialTicks | ||
14 | + */ | ||
15 | + public abstract void onPostRenderEntities(float partialTicks); | ||
16 | 16 | ||
17 | - /** | ||
18 | - * Called after all world rendering is completed | ||
19 | - * | ||
20 | - * @param partialTicks | ||
21 | - */ | ||
22 | - public abstract void onPostRender(float partialTicks); | 17 | + /** |
18 | + * Called after all world rendering is completed | ||
19 | + * | ||
20 | + * @param partialTicks | ||
21 | + */ | ||
22 | + public abstract void onPostRender(float partialTicks); | ||
23 | } | 23 | } |
src/client/java/com/mumfrey/liteloader/PreRenderListener.java
@@ -9,44 +9,49 @@ import net.minecraft.client.renderer.RenderGlobal; | @@ -9,44 +9,49 @@ import net.minecraft.client.renderer.RenderGlobal; | ||
9 | */ | 9 | */ |
10 | public interface PreRenderListener extends LiteMod | 10 | public interface PreRenderListener extends LiteMod |
11 | { | 11 | { |
12 | - /** | ||
13 | - * Called immediately before rendering of the world (including the sky) is started. | ||
14 | - * | ||
15 | - * @param partialTicks | ||
16 | - */ | ||
17 | - public abstract void onRenderWorld(float partialTicks); | ||
18 | - | ||
19 | - /** | ||
20 | - * Called <b>after</b> the world camera transform is initialised, may be called more than once per frame if anaglyph is enabled | ||
21 | - * | ||
22 | - * @param partialTicks | ||
23 | - * @param pass | ||
24 | - * @param timeSlice | ||
25 | - */ | ||
26 | - public abstract void onSetupCameraTransform(float partialTicks, int pass, long timeSlice); | ||
27 | - | ||
28 | - /** | ||
29 | - * Called when the sky is rendered, may be called more than once per frame if anaglyph is enabled | ||
30 | - * | ||
31 | - * @param partialTicks | ||
32 | - * @param pass | ||
33 | - */ | ||
34 | - public abstract void onRenderSky(float partialTicks, int pass); | ||
35 | - | ||
36 | - /** | ||
37 | - * Called immediately before the clouds are rendered, may be called more than once per frame if anaglyph is enabled | ||
38 | - * | ||
39 | - * @param renderGlobal | ||
40 | - * @param partialTicks | ||
41 | - * @param pass | ||
42 | - */ | ||
43 | - public abstract void onRenderClouds(float partialTicks, int pass, RenderGlobal renderGlobal); | 12 | + /** |
13 | + * Called immediately before rendering of the world (including the sky) is | ||
14 | + * started. | ||
15 | + * | ||
16 | + * @param partialTicks | ||
17 | + */ | ||
18 | + public abstract void onRenderWorld(float partialTicks); | ||
44 | 19 | ||
45 | - /** | ||
46 | - * Called before the terrain is rendered, may be called more than once per frame if anaglyph is enabled | ||
47 | - * | ||
48 | - * @param partialTicks | ||
49 | - * @param pass | ||
50 | - */ | ||
51 | - public abstract void onRenderTerrain(float partialTicks, int pass); | 20 | + /** |
21 | + * Called <b>after</b> the world camera transform is initialised, may be | ||
22 | + * called more than once per frame if anaglyph is enabled. | ||
23 | + * | ||
24 | + * @param partialTicks | ||
25 | + * @param pass | ||
26 | + * @param timeSlice | ||
27 | + */ | ||
28 | + public abstract void onSetupCameraTransform(float partialTicks, int pass, long timeSlice); | ||
29 | + | ||
30 | + /** | ||
31 | + * Called when the sky is rendered, may be called more than once per frame | ||
32 | + * if anaglyph is enabled. | ||
33 | + * | ||
34 | + * @param partialTicks | ||
35 | + * @param pass | ||
36 | + */ | ||
37 | + public abstract void onRenderSky(float partialTicks, int pass); | ||
38 | + | ||
39 | + /** | ||
40 | + * Called immediately before the clouds are rendered, may be called more | ||
41 | + * than once per frame if anaglyph is enabled. | ||
42 | + * | ||
43 | + * @param renderGlobal | ||
44 | + * @param partialTicks | ||
45 | + * @param pass | ||
46 | + */ | ||
47 | + public abstract void onRenderClouds(float partialTicks, int pass, RenderGlobal renderGlobal); | ||
48 | + | ||
49 | + /** | ||
50 | + * Called before the terrain is rendered, may be called more than once per | ||
51 | + * frame if anaglyph is enabled. | ||
52 | + * | ||
53 | + * @param partialTicks | ||
54 | + * @param pass | ||
55 | + */ | ||
56 | + public abstract void onRenderTerrain(float partialTicks, int pass); | ||
52 | } | 57 | } |
src/client/java/com/mumfrey/liteloader/RenderListener.java
@@ -9,28 +9,28 @@ import net.minecraft.client.gui.GuiScreen; | @@ -9,28 +9,28 @@ import net.minecraft.client.gui.GuiScreen; | ||
9 | */ | 9 | */ |
10 | public interface RenderListener extends LiteMod | 10 | public interface RenderListener extends LiteMod |
11 | { | 11 | { |
12 | - /** | ||
13 | - * Callback when a frame is rendered | ||
14 | - */ | ||
15 | - public abstract void onRender(); | ||
16 | - | ||
17 | - /** | ||
18 | - * Called immediately before the current GUI is rendered | ||
19 | - * | ||
20 | - * @param currentScreen Current screen (if any) | ||
21 | - */ | ||
22 | - public abstract void onRenderGui(GuiScreen currentScreen); | ||
23 | - | ||
24 | - /** | ||
25 | - * Called when the world is rendered | ||
26 | - * | ||
27 | - * @deprecated Use PreRenderListener::onRenderWorld(F)V instead | ||
28 | - */ | ||
29 | - @Deprecated | ||
30 | - public abstract void onRenderWorld(); | 12 | + /** |
13 | + * Callback when a frame is rendered | ||
14 | + */ | ||
15 | + public abstract void onRender(); | ||
31 | 16 | ||
32 | - /** | ||
33 | - * Called immediately after the world/camera transform is initialised | ||
34 | - */ | ||
35 | - public abstract void onSetupCameraTransform(); | 17 | + /** |
18 | + * Called immediately before the current GUI is rendered | ||
19 | + * | ||
20 | + * @param currentScreen Current screen (if any) | ||
21 | + */ | ||
22 | + public abstract void onRenderGui(GuiScreen currentScreen); | ||
23 | + | ||
24 | + /** | ||
25 | + * Called when the world is rendered | ||
26 | + * | ||
27 | + * @deprecated Use PreRenderListener::onRenderWorld(F)V instead | ||
28 | + */ | ||
29 | + @Deprecated | ||
30 | + public abstract void onRenderWorld(); | ||
31 | + | ||
32 | + /** | ||
33 | + * Called immediately after the world/camera transform is initialised | ||
34 | + */ | ||
35 | + public abstract void onSetupCameraTransform(); | ||
36 | } | 36 | } |
src/client/java/com/mumfrey/liteloader/ScreenshotListener.java
@@ -12,16 +12,17 @@ import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | @@ -12,16 +12,17 @@ import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | ||
12 | */ | 12 | */ |
13 | public interface ScreenshotListener extends LiteMod | 13 | public interface ScreenshotListener extends LiteMod |
14 | { | 14 | { |
15 | - /** | ||
16 | - * Called when a screenshot is taken, mods should return FALSE to suspend further processing, or TRUE to allow | ||
17 | - * processing to continue normally | ||
18 | - * | ||
19 | - * @param screenshotName | ||
20 | - * @param width | ||
21 | - * @param height | ||
22 | - * @param fbo | ||
23 | - * @param message Message to return if the event is cancelled | ||
24 | - * @return FALSE to suspend further processing, or TRUE to allow processing to continue normally | ||
25 | - */ | ||
26 | - public boolean onSaveScreenshot(String screenshotName, int width, int height, Framebuffer fbo, ReturnValue<IChatComponent> message); | 15 | + /** |
16 | + * Called when a screenshot is taken, mods should return FALSE to suspend | ||
17 | + * further processing, or TRUE to allow processing to continue normally | ||
18 | + * | ||
19 | + * @param screenshotName | ||
20 | + * @param width | ||
21 | + * @param height | ||
22 | + * @param fbo | ||
23 | + * @param message Message to return if the event is cancelled | ||
24 | + * @return FALSE to suspend further processing, or TRUE to allow processing | ||
25 | + * to continue normally | ||
26 | + */ | ||
27 | + public boolean onSaveScreenshot(String screenshotName, int width, int height, Framebuffer fbo, ReturnValue<IChatComponent> message); | ||
27 | } | 28 | } |
src/client/java/com/mumfrey/liteloader/Tickable.java
@@ -9,13 +9,14 @@ import net.minecraft.client.Minecraft; | @@ -9,13 +9,14 @@ import net.minecraft.client.Minecraft; | ||
9 | */ | 9 | */ |
10 | public interface Tickable extends LiteMod | 10 | public interface Tickable extends LiteMod |
11 | { | 11 | { |
12 | - /** | ||
13 | - * Called every frame | ||
14 | - * | ||
15 | - * @param minecraft Minecraft instance | ||
16 | - * @param partialTicks Partial tick value | ||
17 | - * @param inGame True if in-game, false if in the menu | ||
18 | - * @param clock True if this is a new tick, otherwise false if it's a regular frame | ||
19 | - */ | ||
20 | - public abstract void onTick(Minecraft minecraft, float partialTicks, boolean inGame, boolean clock); | 12 | + /** |
13 | + * Called every frame | ||
14 | + * | ||
15 | + * @param minecraft Minecraft instance | ||
16 | + * @param partialTicks Partial tick value | ||
17 | + * @param inGame True if in-game, false if in the menu | ||
18 | + * @param clock True if this is a new tick, otherwise false if it's a | ||
19 | + * regular frame | ||
20 | + */ | ||
21 | + public abstract void onTick(Minecraft minecraft, float partialTicks, boolean inGame, boolean clock); | ||
21 | } | 22 | } |
src/client/java/com/mumfrey/liteloader/ViewportListener.java
@@ -4,7 +4,7 @@ import net.minecraft.client.gui.ScaledResolution; | @@ -4,7 +4,7 @@ import net.minecraft.client.gui.ScaledResolution; | ||
4 | 4 | ||
5 | public interface ViewportListener extends LiteMod | 5 | public interface ViewportListener extends LiteMod |
6 | { | 6 | { |
7 | - public abstract void onViewportResized(ScaledResolution resolution, int displayWidth, int displayHeight); | ||
8 | - | ||
9 | - public abstract void onFullScreenToggled(boolean fullScreen); | 7 | + public abstract void onViewportResized(ScaledResolution resolution, int displayWidth, int displayHeight); |
8 | + | ||
9 | + public abstract void onFullScreenToggled(boolean fullScreen); | ||
10 | } | 10 | } |
src/client/java/com/mumfrey/liteloader/client/CallbackProxyClient.java
@@ -26,188 +26,194 @@ import com.mumfrey.liteloader.transformers.event.EventInfo; | @@ -26,188 +26,194 @@ import com.mumfrey.liteloader.transformers.event.EventInfo; | ||
26 | import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | 26 | import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; |
27 | 27 | ||
28 | /** | 28 | /** |
29 | - * Proxy class which handles the redirected calls from the injected callbacks and routes them to the | ||
30 | - * relevant liteloader handler classes. We do this rather than patching a bunch of bytecode into the packet | ||
31 | - * classes themselves because this is easier to maintain. | 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. | ||
32 | * | 33 | * |
33 | * @author Adam Mummery-Smith | 34 | * @author Adam Mummery-Smith |
34 | */ | 35 | */ |
35 | public abstract class CallbackProxyClient extends CallbackProxyCommon | 36 | public abstract class CallbackProxyClient extends CallbackProxyCommon |
36 | { | 37 | { |
37 | - private static LiteLoaderEventBrokerClient clientEventBroker; | ||
38 | - | ||
39 | - private static boolean fboEnabled; | ||
40 | - | ||
41 | - private static boolean renderingFBO; | ||
42 | - | ||
43 | - private CallbackProxyClient() {} | ||
44 | - | ||
45 | - public static void onStartupComplete(EventInfo<Minecraft> e) | ||
46 | - { | ||
47 | - CallbackProxyCommon.onStartupComplete(); | ||
48 | - | ||
49 | - CallbackProxyClient.clientEventBroker = LiteLoaderEventBrokerClient.getInstance(); | ||
50 | - | ||
51 | - if (CallbackProxyClient.clientEventBroker == null) | ||
52 | - { | ||
53 | - throw new RuntimeException("LiteLoader failed to start up properly. The game is in an unstable state and must shut down now. Check the developer log for startup errors"); | ||
54 | - } | ||
55 | - | ||
56 | - CallbackProxyClient.clientEventBroker.onStartupComplete(); | ||
57 | - } | ||
58 | - | ||
59 | - public static void onTimerUpdate(EventInfo<Minecraft> e) | ||
60 | - { | ||
61 | - CallbackProxyClient.clientEventBroker.onTimerUpdate(); | ||
62 | - } | ||
63 | - | ||
64 | - public static void newTick(EventInfo<Minecraft> e) | ||
65 | - { | ||
66 | - } | ||
67 | - | ||
68 | - public static void onTick(EventInfo<Minecraft> e) | ||
69 | - { | ||
70 | - CallbackProxyClient.clientEventBroker.onTick(); | ||
71 | - } | ||
72 | - | ||
73 | - public static void onRender(EventInfo<Minecraft> e) | ||
74 | - { | ||
75 | - CallbackProxyClient.clientEventBroker.onRender(); | ||
76 | - } | ||
77 | - | ||
78 | - public static void preRenderGUI(EventInfo<EntityRenderer> e, float partialTicks) | ||
79 | - { | ||
80 | - CallbackProxyClient.clientEventBroker.preRenderGUI(partialTicks); | ||
81 | - } | ||
82 | - | ||
83 | - public static void onSetupCameraTransform(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice) | ||
84 | - { | ||
85 | - CallbackProxyClient.clientEventBroker.onSetupCameraTransform(pass, partialTicks, timeSlice); | ||
86 | - } | ||
87 | - | ||
88 | - public static void postRenderEntities(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice) | ||
89 | - { | ||
90 | - CallbackProxyClient.clientEventBroker.postRenderEntities(partialTicks, timeSlice); | ||
91 | - } | ||
92 | - | ||
93 | - public static void postRender(EventInfo<EntityRenderer> e, float partialTicks, long timeSlice) | ||
94 | - { | ||
95 | - CallbackProxyClient.clientEventBroker.postRender(partialTicks, timeSlice); | ||
96 | - } | ||
97 | - | ||
98 | - public static void onRenderHUD(EventInfo<EntityRenderer> e, float partialTicks) | ||
99 | - { | ||
100 | - CallbackProxyClient.clientEventBroker.onRenderHUD(partialTicks); | ||
101 | - } | ||
102 | - | ||
103 | - public static void onRenderChat(EventInfo<GuiIngame> e, float partialTicks) | ||
104 | - { | ||
105 | - CallbackProxyClient.clientEventBroker.onRenderChat(e.getSource().getChatGUI(), partialTicks); | ||
106 | - } | ||
107 | - | ||
108 | - public static void postRenderChat(EventInfo<GuiIngame> e, float partialTicks) | ||
109 | - { | ||
110 | - CallbackProxyClient.clientEventBroker.postRenderChat(e.getSource().getChatGUI(), partialTicks); | ||
111 | - } | ||
112 | - | ||
113 | - public static void postRenderHUD(EventInfo<EntityRenderer> e, float partialTicks) | ||
114 | - { | ||
115 | - CallbackProxyClient.clientEventBroker.postRenderHUD(partialTicks); | ||
116 | - } | ||
117 | - | ||
118 | - public static void IntegratedServerCtor(EventInfo<IntegratedServer> e, Minecraft minecraft, String folderName, String worldName, WorldSettings worldSettings) | ||
119 | - { | ||
120 | - CallbackProxyClient.clientEventBroker.onStartServer(e.getSource(), folderName, worldName, worldSettings); | ||
121 | - } | ||
122 | - | ||
123 | - public static void onOutboundChat(EventInfo<EntityPlayerSP> e, String message) | ||
124 | - { | ||
125 | - CallbackProxyClient.clientEventBroker.onSendChatMessage(e, message); | ||
126 | - } | ||
127 | - | ||
128 | - public static void onResize(EventInfo<Minecraft> e) | ||
129 | - { | ||
130 | - if (CallbackProxyClient.clientEventBroker == null) return; | ||
131 | - CallbackProxyClient.clientEventBroker.onResize(e.getSource()); | ||
132 | - } | ||
133 | - | ||
134 | - public static void preRenderFBO(EventInfo<Minecraft> e) | ||
135 | - { | ||
136 | - if (CallbackProxyClient.clientEventBroker == null) return; | ||
137 | - CallbackProxyClient.fboEnabled = OpenGlHelper.isFramebufferEnabled(); | ||
138 | - | ||
139 | - if (CallbackProxyClient.fboEnabled) | ||
140 | - { | ||
141 | - CallbackProxyClient.renderingFBO = true; | ||
142 | - CallbackProxyClient.clientEventBroker.preRenderFBO(e.getSource().getFramebuffer()); | ||
143 | - } | ||
144 | - } | ||
145 | - | ||
146 | - public static void postRenderFBO(EventInfo<Minecraft> e) | ||
147 | - { | ||
148 | - if (CallbackProxyClient.clientEventBroker == null) return; | ||
149 | - CallbackProxyClient.renderingFBO = false; | ||
150 | - | ||
151 | - if (CallbackProxyClient.fboEnabled) | ||
152 | - { | ||
153 | - CallbackProxyClient.clientEventBroker.postRenderFBO(e.getSource().getFramebuffer()); | ||
154 | - } | ||
155 | - } | ||
156 | - | ||
157 | - public static void renderFBO(EventInfo<Framebuffer> e, int width, int height, boolean flag) | ||
158 | - { | ||
159 | - if (CallbackProxyClient.clientEventBroker == null) return; | ||
160 | - if (CallbackProxyClient.renderingFBO) | ||
161 | - { | ||
162 | - CallbackProxyClient.clientEventBroker.onRenderFBO(e.getSource(), width, height); | ||
163 | - } | ||
164 | - | ||
165 | - CallbackProxyClient.renderingFBO = false; | ||
166 | - } | ||
167 | - | ||
168 | - public static void onRenderWorld(EventInfo<EntityRenderer> e, float partialTicks, long timeSlice) | ||
169 | - { | ||
170 | - CallbackProxyClient.clientEventBroker.onRenderWorld(partialTicks, timeSlice); | ||
171 | - } | ||
172 | - | ||
173 | - public static void onRenderSky(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice) | ||
174 | - { | ||
175 | - CallbackProxyClient.clientEventBroker.onRenderSky(partialTicks, pass, timeSlice); | ||
176 | - } | ||
177 | - | ||
178 | - public static void onRenderClouds(EventInfo<EntityRenderer> e, RenderGlobal renderGlobalIn, float partialTicks, int pass) | ||
179 | - { | ||
180 | - CallbackProxyClient.clientEventBroker.onRenderClouds(partialTicks, pass, renderGlobalIn); | ||
181 | - } | ||
182 | - | ||
183 | - public static void onRenderTerrain(EventInfo<EntityRenderer> e, int pass, float partialTicks, long timeSlice) | ||
184 | - { | ||
185 | - CallbackProxyClient.clientEventBroker.onRenderTerrain(partialTicks, pass, timeSlice); | ||
186 | - } | ||
187 | - | ||
188 | - public static void onSaveScreenshot(ReturnEventInfo<ScreenShotHelper, IChatComponent> e, File gameDir, String name, int width, int height, Framebuffer fbo) | ||
189 | - { | ||
190 | - CallbackProxyClient.clientEventBroker.onScreenshot(e, name, width, height, fbo); | ||
191 | - } | ||
192 | - | ||
193 | - public static void onRenderEntity(ReturnEventInfo<RenderManager, Boolean> e, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks, boolean hideBoundingBox, Render render) | ||
194 | - { | ||
195 | - CallbackProxyClient.clientEventBroker.onRenderEntity(e.getSource(), entity, xPos, yPos, zPos, yaw, partialTicks, render); | ||
196 | - } | ||
197 | - | ||
198 | - public static void onPostRenderEntity(ReturnEventInfo<RenderManager, Boolean> e, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks, boolean hideBoundingBox, Render render) | ||
199 | - { | ||
200 | - CallbackProxyClient.clientEventBroker.onPostRenderEntity(e.getSource(), entity, xPos, yPos, zPos, yaw, partialTicks, render); | ||
201 | - } | ||
202 | - | ||
203 | - /** | ||
204 | - * Compatiblbe behaviour with FML, this method is called to generate a consistent offline UUID between client and server | ||
205 | - * for a given username. | ||
206 | - */ | ||
207 | - public static void generateOfflineUUID(ReturnEventInfo<Session, GameProfile> e) | ||
208 | - { | ||
209 | - Session session = e.getSource(); | ||
210 | - UUID uuid = EntityPlayer.getUUID(new GameProfile((UUID)null, session.getUsername())); | ||
211 | - e.setReturnValue(new GameProfile(uuid, session.getUsername())); | ||
212 | - } | 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 | + } | ||
213 | } | 219 | } |
src/client/java/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
@@ -23,98 +23,100 @@ import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException; | @@ -23,98 +23,100 @@ import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException; | ||
23 | */ | 23 | */ |
24 | public class ClientPluginChannelsClient extends ClientPluginChannels | 24 | public class ClientPluginChannelsClient extends ClientPluginChannels |
25 | { | 25 | { |
26 | - /** | ||
27 | - * @param netHandler | ||
28 | - * @param loginPacket | ||
29 | - */ | ||
30 | - void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess loginPacket) | ||
31 | - { | ||
32 | - this.clearPluginChannels(netHandler); | ||
33 | - } | 26 | + /** |
27 | + * @param netHandler | ||
28 | + * @param loginPacket | ||
29 | + */ | ||
30 | + void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess loginPacket) | ||
31 | + { | ||
32 | + this.clearPluginChannels(netHandler); | ||
33 | + } | ||
34 | 34 | ||
35 | - /** | ||
36 | - * @param netHandler | ||
37 | - * @param loginPacket | ||
38 | - */ | ||
39 | - void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | ||
40 | - { | ||
41 | - this.sendRegisteredPluginChannels(netHandler); | ||
42 | - } | 35 | + /** |
36 | + * @param netHandler | ||
37 | + * @param loginPacket | ||
38 | + */ | ||
39 | + void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | ||
40 | + { | ||
41 | + this.sendRegisteredPluginChannels(netHandler); | ||
42 | + } | ||
43 | 43 | ||
44 | - /** | ||
45 | - * Callback for the plugin channel hook | ||
46 | - * | ||
47 | - * @param customPayload | ||
48 | - */ | ||
49 | - @Override | ||
50 | - public void onPluginChannelMessage(S3FPacketCustomPayload customPayload) | ||
51 | - { | ||
52 | - if (customPayload != null && customPayload.getChannelName() != null) | ||
53 | - { | ||
54 | - String channel = customPayload.getChannelName(); | ||
55 | - PacketBuffer data = customPayload.getBufferData(); | ||
56 | - | ||
57 | - this.onPluginChannelMessage(channel, data); | ||
58 | - } | ||
59 | - } | 44 | + /** |
45 | + * Callback for the plugin channel hook | ||
46 | + * | ||
47 | + * @param customPayload | ||
48 | + */ | ||
49 | + @Override | ||
50 | + public void onPluginChannelMessage(S3FPacketCustomPayload customPayload) | ||
51 | + { | ||
52 | + if (customPayload != null && customPayload.getChannelName() != null) | ||
53 | + { | ||
54 | + String channel = customPayload.getChannelName(); | ||
55 | + PacketBuffer data = customPayload.getBufferData(); | ||
60 | 56 | ||
61 | - /** | ||
62 | - * @param netHandler | ||
63 | - * @param registrationData | ||
64 | - */ | ||
65 | - @Override | ||
66 | - protected void sendRegistrationData(INetHandler netHandler, PacketBuffer registrationData) | ||
67 | - { | ||
68 | - if (netHandler instanceof INetHandlerLoginClient) | ||
69 | - { | ||
70 | - NetworkManager networkManager = PrivateFieldsClient.netManager.get(((NetHandlerLoginClient)netHandler)); | ||
71 | - networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); | ||
72 | - } | ||
73 | - else if (netHandler instanceof INetHandlerPlayClient) | ||
74 | - { | ||
75 | - ClientPluginChannelsClient.dispatch(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); | ||
76 | - } | ||
77 | - } | 57 | + this.onPluginChannelMessage(channel, data); |
58 | + } | ||
59 | + } | ||
78 | 60 | ||
79 | - /** | ||
80 | - * Send a message to the server on a plugin channel | ||
81 | - * | ||
82 | - * @param channel Channel to send, must not be a reserved channel name | ||
83 | - * @param data | ||
84 | - */ | ||
85 | - @Override | ||
86 | - protected boolean send(String channel, PacketBuffer data, ChannelPolicy policy) | ||
87 | - { | ||
88 | - if (channel == null || channel.length() > 16 || CHANNEL_REGISTER.equals(channel) || CHANNEL_UNREGISTER.equals(channel)) | ||
89 | - throw new RuntimeException("Invalid channel name specified"); | ||
90 | - | ||
91 | - if (!policy.allows(this, channel)) | ||
92 | - { | ||
93 | - if (policy.isSilent()) return false; | ||
94 | - throw new UnregisteredChannelException(channel); | ||
95 | - } | ||
96 | - | ||
97 | - C17PacketCustomPayload payload = new C17PacketCustomPayload(channel, data); | ||
98 | - return ClientPluginChannelsClient.dispatch(payload); | ||
99 | - } | 61 | + /** |
62 | + * @param netHandler | ||
63 | + * @param registrationData | ||
64 | + */ | ||
65 | + @Override | ||
66 | + protected void sendRegistrationData(INetHandler netHandler, PacketBuffer registrationData) | ||
67 | + { | ||
68 | + if (netHandler instanceof INetHandlerLoginClient) | ||
69 | + { | ||
70 | + NetworkManager networkManager = PrivateFieldsClient.netManager.get(((NetHandlerLoginClient)netHandler)); | ||
71 | + networkManager.sendPacket(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); | ||
72 | + } | ||
73 | + else if (netHandler instanceof INetHandlerPlayClient) | ||
74 | + { | ||
75 | + ClientPluginChannelsClient.dispatch(new C17PacketCustomPayload(CHANNEL_REGISTER, registrationData)); | ||
76 | + } | ||
77 | + } | ||
100 | 78 | ||
101 | - /** | ||
102 | - * @param payload | ||
103 | - */ | ||
104 | - static boolean dispatch(C17PacketCustomPayload payload) | ||
105 | - { | ||
106 | - try | ||
107 | - { | ||
108 | - Minecraft minecraft = Minecraft.getMinecraft(); | ||
109 | - | ||
110 | - if (minecraft.thePlayer != null && minecraft.thePlayer.sendQueue != null) | ||
111 | - { | ||
112 | - minecraft.thePlayer.sendQueue.addToSendQueue(payload); | ||
113 | - return true; | ||
114 | - } | ||
115 | - } | ||
116 | - catch (Exception ex) {} | ||
117 | - | ||
118 | - return false; | ||
119 | - } | 79 | + /** |
80 | + * Send a message to the server on a plugin channel | ||
81 | + * | ||
82 | + * @param channel Channel to send, must not be a reserved channel name | ||
83 | + * @param data | ||
84 | + */ | ||
85 | + @Override | ||
86 | + protected boolean send(String channel, PacketBuffer data, ChannelPolicy policy) | ||
87 | + { | ||
88 | + if (channel == null || channel.length() > 16 || CHANNEL_REGISTER.equals(channel) || CHANNEL_UNREGISTER.equals(channel)) | ||
89 | + { | ||
90 | + throw new RuntimeException("Invalid channel name specified"); | ||
91 | + } | ||
92 | + | ||
93 | + if (!policy.allows(this, channel)) | ||
94 | + { | ||
95 | + if (policy.isSilent()) return false; | ||
96 | + throw new UnregisteredChannelException(channel); | ||
97 | + } | ||
98 | + | ||
99 | + C17PacketCustomPayload payload = new C17PacketCustomPayload(channel, data); | ||
100 | + return ClientPluginChannelsClient.dispatch(payload); | ||
101 | + } | ||
102 | + | ||
103 | + /** | ||
104 | + * @param payload | ||
105 | + */ | ||
106 | + static boolean dispatch(C17PacketCustomPayload payload) | ||
107 | + { | ||
108 | + try | ||
109 | + { | ||
110 | + Minecraft minecraft = Minecraft.getMinecraft(); | ||
111 | + | ||
112 | + if (minecraft.thePlayer != null && minecraft.thePlayer.sendQueue != null) | ||
113 | + { | ||
114 | + minecraft.thePlayer.sendQueue.addToSendQueue(payload); | ||
115 | + return true; | ||
116 | + } | ||
117 | + } | ||
118 | + catch (Exception ex) {} | ||
119 | + | ||
120 | + return false; | ||
121 | + } | ||
120 | } | 122 | } |
src/client/java/com/mumfrey/liteloader/client/GameEngineClient.java
@@ -24,135 +24,136 @@ import com.mumfrey.liteloader.common.Resources; | @@ -24,135 +24,136 @@ import com.mumfrey.liteloader.common.Resources; | ||
24 | */ | 24 | */ |
25 | public class GameEngineClient implements GameEngine<Minecraft, IntegratedServer> | 25 | public class GameEngineClient implements GameEngine<Minecraft, IntegratedServer> |
26 | { | 26 | { |
27 | - private final Minecraft engine = Minecraft.getMinecraft(); | ||
28 | - | ||
29 | - private final Resources<?, ?> resources = new ResourcesClient(); | ||
30 | - | ||
31 | - /* (non-Javadoc) | ||
32 | - * @see com.mumfrey.liteloader.common.GameEngine#getProfiler() | ||
33 | - */ | ||
34 | - @Override | ||
35 | - public Profiler getProfiler() | ||
36 | - { | ||
37 | - return this.engine.mcProfiler; | ||
38 | - } | ||
39 | - | ||
40 | - /* (non-Javadoc) | ||
41 | - * @see com.mumfrey.liteloader.common.GameEngine#isClient() | ||
42 | - */ | ||
43 | - @Override | ||
44 | - public boolean isClient() | ||
45 | - { | ||
46 | - return true; | ||
47 | - } | ||
48 | - | ||
49 | - /* (non-Javadoc) | ||
50 | - * @see com.mumfrey.liteloader.common.GameEngine#isServer() | ||
51 | - */ | ||
52 | - @Override | ||
53 | - public boolean isServer() | ||
54 | - { | ||
55 | - return this.isSinglePlayer(); | ||
56 | - } | ||
57 | - | ||
58 | - /* (non-Javadoc) | ||
59 | - * @see com.mumfrey.liteloader.common.GameEngine#isInGame() | ||
60 | - */ | ||
61 | - @Override | ||
62 | - public boolean isInGame() | ||
63 | - { | ||
64 | - return this.engine.thePlayer != null && this.engine.theWorld != null && this.engine.theWorld.isRemote; | ||
65 | - } | ||
66 | - | ||
67 | - /* (non-Javadoc) | ||
68 | - * @see com.mumfrey.liteloader.common.GameEngine#isRunning() | ||
69 | - */ | ||
70 | - @Override | ||
71 | - public boolean isRunning() | ||
72 | - { | ||
73 | - return ((IMinecraft)this.engine).isRunning(); | ||
74 | - } | ||
75 | - | ||
76 | - /* (non-Javadoc) | ||
77 | - * @see com.mumfrey.liteloader.common.GameEngine#isSingleplayer() | ||
78 | - */ | ||
79 | - @Override | ||
80 | - public boolean isSinglePlayer() | ||
81 | - { | ||
82 | - return this.engine.isSingleplayer(); | ||
83 | - } | ||
84 | - | ||
85 | - /* (non-Javadoc) | ||
86 | - * @see com.mumfrey.liteloader.common.GameEngine#getClient() | ||
87 | - */ | ||
88 | - @Override | ||
89 | - public Minecraft getClient() | ||
90 | - { | ||
91 | - return this.engine; | ||
92 | - } | ||
93 | - | ||
94 | - /* (non-Javadoc) | ||
95 | - * @see com.mumfrey.liteloader.common.GameEngine#getServer() | ||
96 | - */ | ||
97 | - @Override | ||
98 | - public IntegratedServer getServer() | ||
99 | - { | ||
100 | - return this.engine.getIntegratedServer(); | ||
101 | - } | ||
102 | - | ||
103 | - @Override | ||
104 | - public Resources<?, ?> getResources() | ||
105 | - { | ||
106 | - return this.resources; | ||
107 | - } | ||
108 | - | ||
109 | - public GameSettings getGameSettings() | ||
110 | - { | ||
111 | - return this.engine.gameSettings; | ||
112 | - } | ||
113 | - | ||
114 | - public ScaledResolution getScaledResolution() | ||
115 | - { | ||
116 | - return new ScaledResolution(this.engine, this.engine.displayWidth, this.engine.displayHeight); | ||
117 | - } | ||
118 | - | ||
119 | - public GuiNewChat getChatGUI() | ||
120 | - { | ||
121 | - return this.engine.ingameGUI.getChatGUI(); | ||
122 | - } | ||
123 | - | ||
124 | - public GuiScreen getCurrentScreen() | ||
125 | - { | ||
126 | - return this.engine.currentScreen; | ||
127 | - } | ||
128 | - | ||
129 | - public boolean hideGUI() | ||
130 | - { | ||
131 | - return this.engine.gameSettings.hideGUI; | ||
132 | - } | ||
133 | - | ||
134 | - public SoundHandler getSoundHandler() | ||
135 | - { | ||
136 | - return this.engine.getSoundHandler(); | ||
137 | - } | ||
138 | - | ||
139 | - /* (non-Javadoc) | ||
140 | - * @see com.mumfrey.liteloader.common.GameEngine#getKeyBindings() | ||
141 | - */ | ||
142 | - @Override | ||
143 | - public List<KeyBinding> getKeyBindings() | ||
144 | - { | ||
145 | - LinkedList<KeyBinding> keyBindings = new LinkedList<KeyBinding>(); | ||
146 | - keyBindings.addAll(Arrays.asList(this.engine.gameSettings.keyBindings)); | ||
147 | - return keyBindings; | ||
148 | - } | ||
149 | - | ||
150 | - /* (non-Javadoc) | ||
151 | - * @see com.mumfrey.liteloader.common.GameEngine#setKeyBindings(java.util.List) | ||
152 | - */ | ||
153 | - @Override | ||
154 | - public void setKeyBindings(List<KeyBinding> keyBindings) | ||
155 | - { | ||
156 | - this.engine.gameSettings.keyBindings = keyBindings.toArray(new KeyBinding[0]); | ||
157 | - } | 27 | + private final Minecraft engine = Minecraft.getMinecraft(); |
28 | + | ||
29 | + private final Resources<?, ?> resources = new ResourcesClient(); | ||
30 | + | ||
31 | + /* (non-Javadoc) | ||
32 | + * @see com.mumfrey.liteloader.common.GameEngine#getProfiler() | ||
33 | + */ | ||
34 | + @Override | ||
35 | + public Profiler getProfiler() | ||
36 | + { | ||
37 | + return this.engine.mcProfiler; | ||
38 | + } | ||
39 | + | ||
40 | + /* (non-Javadoc) | ||
41 | + * @see com.mumfrey.liteloader.common.GameEngine#isClient() | ||
42 | + */ | ||
43 | + @Override | ||
44 | + public boolean isClient() | ||
45 | + { | ||
46 | + return true; | ||
47 | + } | ||
48 | + | ||
49 | + /* (non-Javadoc) | ||
50 | + * @see com.mumfrey.liteloader.common.GameEngine#isServer() | ||
51 | + */ | ||
52 | + @Override | ||
53 | + public boolean isServer() | ||
54 | + { | ||
55 | + return this.isSinglePlayer(); | ||
56 | + } | ||
57 | + | ||
58 | + /* (non-Javadoc) | ||
59 | + * @see com.mumfrey.liteloader.common.GameEngine#isInGame() | ||
60 | + */ | ||
61 | + @Override | ||
62 | + public boolean isInGame() | ||
63 | + { | ||
64 | + return this.engine.thePlayer != null && this.engine.theWorld != null && this.engine.theWorld.isRemote; | ||
65 | + } | ||
66 | + | ||
67 | + /* (non-Javadoc) | ||
68 | + * @see com.mumfrey.liteloader.common.GameEngine#isRunning() | ||
69 | + */ | ||
70 | + @Override | ||
71 | + public boolean isRunning() | ||
72 | + { | ||
73 | + return ((IMinecraft)this.engine).isRunning(); | ||
74 | + } | ||
75 | + | ||
76 | + /* (non-Javadoc) | ||
77 | + * @see com.mumfrey.liteloader.common.GameEngine#isSingleplayer() | ||
78 | + */ | ||
79 | + @Override | ||
80 | + public boolean isSinglePlayer() | ||
81 | + { | ||
82 | + return this.engine.isSingleplayer(); | ||
83 | + } | ||
84 | + | ||
85 | + /* (non-Javadoc) | ||
86 | + * @see com.mumfrey.liteloader.common.GameEngine#getClient() | ||
87 | + */ | ||
88 | + @Override | ||
89 | + public Minecraft getClient() | ||
90 | + { | ||
91 | + return this.engine; | ||
92 | + } | ||
93 | + | ||
94 | + /* (non-Javadoc) | ||
95 | + * @see com.mumfrey.liteloader.common.GameEngine#getServer() | ||
96 | + */ | ||
97 | + @Override | ||
98 | + public IntegratedServer getServer() | ||
99 | + { | ||
100 | + return this.engine.getIntegratedServer(); | ||
101 | + } | ||
102 | + | ||
103 | + @Override | ||
104 | + public Resources<?, ?> getResources() | ||
105 | + { | ||
106 | + return this.resources; | ||
107 | + } | ||
108 | + | ||
109 | + public GameSettings getGameSettings() | ||
110 | + { | ||
111 | + return this.engine.gameSettings; | ||
112 | + } | ||
113 | + | ||
114 | + public ScaledResolution getScaledResolution() | ||
115 | + { | ||
116 | + return new ScaledResolution(this.engine, this.engine.displayWidth, this.engine.displayHeight); | ||
117 | + } | ||
118 | + | ||
119 | + public GuiNewChat getChatGUI() | ||
120 | + { | ||
121 | + return this.engine.ingameGUI.getChatGUI(); | ||
122 | + } | ||
123 | + | ||
124 | + public GuiScreen getCurrentScreen() | ||
125 | + { | ||
126 | + return this.engine.currentScreen; | ||
127 | + } | ||
128 | + | ||
129 | + public boolean hideGUI() | ||
130 | + { | ||
131 | + return this.engine.gameSettings.hideGUI; | ||
132 | + } | ||
133 | + | ||
134 | + public SoundHandler getSoundHandler() | ||
135 | + { | ||
136 | + return this.engine.getSoundHandler(); | ||
137 | + } | ||
138 | + | ||
139 | + /* (non-Javadoc) | ||
140 | + * @see com.mumfrey.liteloader.common.GameEngine#getKeyBindings() | ||
141 | + */ | ||
142 | + @Override | ||
143 | + public List<KeyBinding> getKeyBindings() | ||
144 | + { | ||
145 | + LinkedList<KeyBinding> keyBindings = new LinkedList<KeyBinding>(); | ||
146 | + keyBindings.addAll(Arrays.asList(this.engine.gameSettings.keyBindings)); | ||
147 | + return keyBindings; | ||
148 | + } | ||
149 | + | ||
150 | + /* (non-Javadoc) | ||
151 | + * @see com.mumfrey.liteloader.common.GameEngine | ||
152 | + * #setKeyBindings(java.util.List) | ||
153 | + */ | ||
154 | + @Override | ||
155 | + public void setKeyBindings(List<KeyBinding> keyBindings) | ||
156 | + { | ||
157 | + this.engine.gameSettings.keyBindings = keyBindings.toArray(new KeyBinding[0]); | ||
158 | + } | ||
158 | } | 159 | } |
src/client/java/com/mumfrey/liteloader/client/LiteLoaderCoreProviderClient.java
1 | package com.mumfrey.liteloader.client; | 1 | package com.mumfrey.liteloader.client; |
2 | 2 | ||
3 | +import net.minecraft.client.audio.SoundHandler; | ||
3 | import net.minecraft.client.resources.IResourceManager; | 4 | import net.minecraft.client.resources.IResourceManager; |
4 | import net.minecraft.client.resources.IResourcePack; | 5 | import net.minecraft.client.resources.IResourcePack; |
5 | import net.minecraft.client.resources.SimpleReloadableResourceManager; | 6 | import net.minecraft.client.resources.SimpleReloadableResourceManager; |
@@ -22,84 +23,89 @@ import com.mumfrey.liteloader.resources.InternalResourcePack; | @@ -22,84 +23,89 @@ import com.mumfrey.liteloader.resources.InternalResourcePack; | ||
22 | */ | 23 | */ |
23 | public class LiteLoaderCoreProviderClient implements CoreProvider | 24 | public class LiteLoaderCoreProviderClient implements CoreProvider |
24 | { | 25 | { |
25 | - /** | ||
26 | - * Loader Properties adapter | ||
27 | - */ | ||
28 | - private final LoaderProperties properties; | ||
29 | - | ||
30 | - /** | ||
31 | - * Read from the properties file, if true we will inhibit the sound manager reload during startup to avoid getting in trouble with OpenAL | ||
32 | - */ | ||
33 | - private boolean inhibitSoundManagerReload = true; | ||
34 | - | ||
35 | - /** | ||
36 | - * If inhibit is enabled, this object is used to reflectively inhibit the sound manager's reload process during startup by removing it from the reloadables list | ||
37 | - */ | ||
38 | - private SoundHandlerReloadInhibitor soundHandlerReloadInhibitor; | ||
39 | - | ||
40 | - public LiteLoaderCoreProviderClient(LoaderProperties properties) | ||
41 | - { | ||
42 | - this.properties = properties; | ||
43 | - } | ||
44 | - | ||
45 | - @Override | ||
46 | - public void onInit() | ||
47 | - { | ||
48 | - this.inhibitSoundManagerReload = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_SOUND_MANAGER_FIX, true); | ||
49 | - } | ||
50 | - | ||
51 | - @SuppressWarnings("unchecked") | ||
52 | - @Override | ||
53 | - public void onPostInit(GameEngine<?, ?> engine) | ||
54 | - { | ||
55 | - this.soundHandlerReloadInhibitor = new SoundHandlerReloadInhibitor((SimpleReloadableResourceManager)engine.getResources().getResourceManager(), ((GameEngineClient)engine).getSoundHandler()); | ||
56 | - | ||
57 | - if (this.inhibitSoundManagerReload) | ||
58 | - { | ||
59 | - this.soundHandlerReloadInhibitor.inhibit(); | ||
60 | - } | ||
61 | - | ||
62 | - // Add self as a resource pack for texture/lang resources | ||
63 | - Resources<IResourceManager, IResourcePack> resources = (Resources<IResourceManager, IResourcePack>)LiteLoader.getGameEngine().getResources(); | ||
64 | - resources.registerResourcePack(new InternalResourcePack("LiteLoader", LiteLoader.class, "liteloader")); | ||
65 | - } | ||
66 | - | ||
67 | - @Override | ||
68 | - public void onPostInitComplete(LiteLoaderMods mods) | ||
69 | - { | ||
70 | - } | ||
71 | - | ||
72 | - @Override | ||
73 | - public void onStartupComplete() | ||
74 | - { | ||
75 | - if (this.soundHandlerReloadInhibitor != null && this.soundHandlerReloadInhibitor.isInhibited()) | ||
76 | - { | ||
77 | - this.soundHandlerReloadInhibitor.unInhibit(true); | ||
78 | - } | ||
79 | - } | ||
80 | - | ||
81 | - @Override | ||
82 | - public void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | ||
83 | - { | ||
84 | - } | ||
85 | - | ||
86 | - @Override | ||
87 | - public void onPostRender(int mouseX, int mouseY, float partialTicks) | ||
88 | - { | ||
89 | - } | ||
90 | - | ||
91 | - @Override | ||
92 | - public void onTick(boolean clock, float partialTicks, boolean inGame) | ||
93 | - { | ||
94 | - } | ||
95 | - | ||
96 | - @Override | ||
97 | - public void onWorldChanged(World world) | ||
98 | - { | ||
99 | - } | ||
100 | - | ||
101 | - @Override | ||
102 | - public void onShutDown() | ||
103 | - { | ||
104 | - } | 26 | + /** |
27 | + * Loader Properties adapter | ||
28 | + */ | ||
29 | + private final LoaderProperties properties; | ||
30 | + | ||
31 | + /** | ||
32 | + * Read from the properties file, if true we will inhibit the sound manager | ||
33 | + * reload during startup to avoid getting in trouble with OpenAL. | ||
34 | + */ | ||
35 | + private boolean inhibitSoundManagerReload = true; | ||
36 | + | ||
37 | + /** | ||
38 | + * If inhibit is enabled, this object is used to reflectively inhibit the | ||
39 | + * sound manager's reload process during startup by removing it from the | ||
40 | + * reloadables list. | ||
41 | + */ | ||
42 | + private SoundHandlerReloadInhibitor soundHandlerReloadInhibitor; | ||
43 | + | ||
44 | + public LiteLoaderCoreProviderClient(LoaderProperties properties) | ||
45 | + { | ||
46 | + this.properties = properties; | ||
47 | + } | ||
48 | + | ||
49 | + @Override | ||
50 | + public void onInit() | ||
51 | + { | ||
52 | + this.inhibitSoundManagerReload = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_SOUND_MANAGER_FIX, true); | ||
53 | + } | ||
54 | + | ||
55 | + @SuppressWarnings("unchecked") | ||
56 | + @Override | ||
57 | + public void onPostInit(GameEngine<?, ?> engine) | ||
58 | + { | ||
59 | + SimpleReloadableResourceManager resourceManager = (SimpleReloadableResourceManager)engine.getResources().getResourceManager(); | ||
60 | + SoundHandler soundHandler = ((GameEngineClient)engine).getSoundHandler(); | ||
61 | + this.soundHandlerReloadInhibitor = new SoundHandlerReloadInhibitor(resourceManager, soundHandler); | ||
62 | + | ||
63 | + if (this.inhibitSoundManagerReload) | ||
64 | + { | ||
65 | + this.soundHandlerReloadInhibitor.inhibit(); | ||
66 | + } | ||
67 | + | ||
68 | + // Add self as a resource pack for texture/lang resources | ||
69 | + Resources<IResourceManager, IResourcePack> resources = (Resources<IResourceManager, IResourcePack>)LiteLoader.getGameEngine().getResources(); | ||
70 | + resources.registerResourcePack(new InternalResourcePack("LiteLoader", LiteLoader.class, "liteloader")); | ||
71 | + } | ||
72 | + | ||
73 | + @Override | ||
74 | + public void onPostInitComplete(LiteLoaderMods mods) | ||
75 | + { | ||
76 | + } | ||
77 | + | ||
78 | + @Override | ||
79 | + public void onStartupComplete() | ||
80 | + { | ||
81 | + if (this.soundHandlerReloadInhibitor != null && this.soundHandlerReloadInhibitor.isInhibited()) | ||
82 | + { | ||
83 | + this.soundHandlerReloadInhibitor.unInhibit(true); | ||
84 | + } | ||
85 | + } | ||
86 | + | ||
87 | + @Override | ||
88 | + public void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | ||
89 | + { | ||
90 | + } | ||
91 | + | ||
92 | + @Override | ||
93 | + public void onPostRender(int mouseX, int mouseY, float partialTicks) | ||
94 | + { | ||
95 | + } | ||
96 | + | ||
97 | + @Override | ||
98 | + public void onTick(boolean clock, float partialTicks, boolean inGame) | ||
99 | + { | ||
100 | + } | ||
101 | + | ||
102 | + @Override | ||
103 | + public void onWorldChanged(World world) | ||
104 | + { | ||
105 | + } | ||
106 | + | ||
107 | + @Override | ||
108 | + public void onShutDown() | ||
109 | + { | ||
110 | + } | ||
105 | } | 111 | } |
src/client/java/com/mumfrey/liteloader/client/LiteLoaderEventBrokerClient.java
@@ -36,527 +36,532 @@ import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | @@ -36,527 +36,532 @@ import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | ||
36 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | 36 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
37 | 37 | ||
38 | public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker<Minecraft, IntegratedServer> implements IResourceManagerReloadListener | 38 | public class LiteLoaderEventBrokerClient extends LiteLoaderEventBroker<Minecraft, IntegratedServer> implements IResourceManagerReloadListener |
39 | -{ | ||
40 | - private static LiteLoaderEventBrokerClient instance; | ||
41 | - | ||
42 | - /** | ||
43 | - * Reference to the game | ||
44 | - */ | ||
45 | - protected final GameEngineClient engineClient; | ||
46 | - | ||
47 | - /** | ||
48 | - * Current screen width | ||
49 | - */ | ||
50 | - private int screenWidth = 854; | ||
51 | - | ||
52 | - /** | ||
53 | - * Current screen height | ||
54 | - */ | ||
55 | - private int screenHeight = 480; | ||
56 | - | ||
57 | - /** | ||
58 | - * | ||
59 | - */ | ||
60 | - private boolean wasFullScreen = false; | ||
61 | - | ||
62 | - /** | ||
63 | - * Hash code of the current world. We don't store the world reference here because we don't want | ||
64 | - * to mess with world GC by mistake | ||
65 | - */ | ||
66 | - private int worldHashCode = 0; | ||
67 | - | ||
68 | - private FastIterableDeque<Tickable> tickListeners; | ||
69 | - private FastIterableDeque<GameLoopListener> loopListeners = new HandlerList<GameLoopListener>(GameLoopListener.class); | ||
70 | - private FastIterableDeque<RenderListener> renderListeners = new HandlerList<RenderListener>(RenderListener.class); | ||
71 | - private FastIterableDeque<PreRenderListener> preRenderListeners = new HandlerList<PreRenderListener>(PreRenderListener.class); | ||
72 | - private FastIterableDeque<PostRenderListener> postRenderListeners = new HandlerList<PostRenderListener>(PostRenderListener.class); | ||
73 | - private FastIterableDeque<HUDRenderListener> hudRenderListeners = new HandlerList<HUDRenderListener>(HUDRenderListener.class); | ||
74 | - private FastIterableDeque<ChatRenderListener> chatRenderListeners = new HandlerList<ChatRenderListener>(ChatRenderListener.class); | ||
75 | - private FastIterableDeque<OutboundChatListener> outboundChatListeners = new HandlerList<OutboundChatListener>(OutboundChatListener.class); | ||
76 | - private FastIterableDeque<ViewportListener> viewportListeners = new HandlerList<ViewportListener>(ViewportListener.class); | ||
77 | - private FastIterableDeque<FrameBufferListener> frameBufferListeners = new HandlerList<FrameBufferListener>(FrameBufferListener.class); | ||
78 | - private FastIterableDeque<InitCompleteListener> initListeners = new HandlerList<InitCompleteListener>(InitCompleteListener.class); | ||
79 | - private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, ReturnLogicOp.AND); | ||
80 | - private FastIterableDeque<ScreenshotListener> screenshotListeners = new HandlerList<ScreenshotListener>(ScreenshotListener.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | ||
81 | - private FastIterableDeque<EntityRenderListener> entityRenderListeners = new HandlerList<EntityRenderListener>(EntityRenderListener.class); | ||
82 | - | ||
83 | - @SuppressWarnings("cast") | ||
84 | - public LiteLoaderEventBrokerClient(LiteLoader loader, GameEngineClient engine, LoaderProperties properties) | ||
85 | - { | ||
86 | - super(loader, engine, properties); | ||
87 | - | ||
88 | - LiteLoaderEventBrokerClient.instance = this; | ||
89 | - | ||
90 | - this.engineClient = (GameEngineClient)engine; | ||
91 | - this.tickListeners = new ProfilingHandlerList<Tickable>(Tickable.class, this.engineClient.getProfiler()); | ||
92 | - } | ||
93 | - | ||
94 | - static LiteLoaderEventBrokerClient getInstance() | ||
95 | - { | ||
96 | - return LiteLoaderEventBrokerClient.instance; | ||
97 | - } | ||
98 | - | ||
99 | - @Override | ||
100 | - public void onResourceManagerReload(IResourceManager resourceManager) | ||
101 | - { | ||
102 | - LoadingProgress.setMessage("Reloading Resources..."); | ||
103 | - } | ||
104 | - | ||
105 | - /* (non-Javadoc) | ||
106 | - * @see com.mumfrey.liteloader.api.InterfaceProvider#registerInterfaces(com.mumfrey.liteloader.core.InterfaceRegistrationDelegate) | ||
107 | - */ | ||
108 | - @Override | ||
109 | - public void registerInterfaces(InterfaceRegistrationDelegate delegate) | ||
110 | - { | ||
111 | - super.registerInterfaces(delegate); | ||
112 | - | ||
113 | - delegate.registerInterface(Tickable.class); | ||
114 | - delegate.registerInterface(GameLoopListener.class); | ||
115 | - delegate.registerInterface(RenderListener.class); | ||
116 | - delegate.registerInterface(PreRenderListener.class); | ||
117 | - delegate.registerInterface(PostRenderListener.class); | ||
118 | - delegate.registerInterface(HUDRenderListener.class); | ||
119 | - delegate.registerInterface(ChatRenderListener.class); | ||
120 | - delegate.registerInterface(OutboundChatListener.class); | ||
121 | - delegate.registerInterface(ViewportListener.class); | ||
122 | - delegate.registerInterface(FrameBufferListener.class); | ||
123 | - delegate.registerInterface(InitCompleteListener.class); | ||
124 | - delegate.registerInterface(OutboundChatFilter.class); | ||
125 | - delegate.registerInterface(ScreenshotListener.class); | ||
126 | - delegate.registerInterface(EntityRenderListener.class); | ||
127 | - } | ||
128 | - | ||
129 | - /* (non-Javadoc) | ||
130 | - * @see com.mumfrey.liteloader.api.InterfaceProvider#initProvider() | ||
131 | - */ | ||
132 | - @Override | ||
133 | - public void initProvider() | ||
134 | - { | ||
135 | - } | ||
136 | - | ||
137 | - /** | ||
138 | - * @param tickable | ||
139 | - */ | ||
140 | - public void addTickListener(Tickable tickable) | ||
141 | - { | ||
142 | - this.tickListeners.add(tickable); | ||
143 | - } | ||
144 | - | ||
145 | - /** | ||
146 | - * @param loopListener | ||
147 | - */ | ||
148 | - public void addLoopListener(GameLoopListener loopListener) | ||
149 | - { | ||
150 | - this.loopListeners.add(loopListener); | ||
151 | - } | ||
152 | - | ||
153 | - /** | ||
154 | - * @param initCompleteListener | ||
155 | - */ | ||
156 | - public void addInitListener(InitCompleteListener initCompleteListener) | ||
157 | - { | ||
158 | - this.initListeners.add(initCompleteListener); | ||
159 | - } | ||
160 | - | ||
161 | - /** | ||
162 | - * @param renderListener | ||
163 | - */ | ||
164 | - public void addRenderListener(RenderListener renderListener) | ||
165 | - { | ||
166 | - this.renderListeners.add(renderListener); | ||
167 | - } | ||
168 | - | ||
169 | - /** | ||
170 | - * @param preRenderListener | ||
171 | - */ | ||
172 | - public void addPreRenderListener(PreRenderListener preRenderListener) | ||
173 | - { | ||
174 | - this.preRenderListeners.add(preRenderListener); | ||
175 | - } | ||
176 | - | ||
177 | - /** | ||
178 | - * @param postRenderListener | ||
179 | - */ | ||
180 | - public void addPostRenderListener(PostRenderListener postRenderListener) | ||
181 | - { | ||
182 | - this.postRenderListeners.add(postRenderListener); | ||
183 | - } | ||
184 | - | ||
185 | - /** | ||
186 | - * @param chatRenderListener | ||
187 | - */ | ||
188 | - public void addChatRenderListener(ChatRenderListener chatRenderListener) | ||
189 | - { | ||
190 | - this.chatRenderListeners.add(chatRenderListener); | ||
191 | - } | ||
192 | - | ||
193 | - /** | ||
194 | - * @param hudRenderListener | ||
195 | - */ | ||
196 | - public void addHUDRenderListener(HUDRenderListener hudRenderListener) | ||
197 | - { | ||
198 | - this.hudRenderListeners.add(hudRenderListener); | ||
199 | - } | ||
200 | - | ||
201 | - /** | ||
202 | - * @param outboundChatListener | ||
203 | - */ | ||
204 | - public void addOutboundChatListener(OutboundChatListener outboundChatListener) | ||
205 | - { | ||
206 | - this.outboundChatListeners.add(outboundChatListener); | ||
207 | - } | ||
208 | - | ||
209 | - /** | ||
210 | - * @param outboundChatFilter | ||
211 | - */ | ||
212 | - public void addOutboundChatFiler(OutboundChatFilter outboundChatFilter) | ||
213 | - { | ||
214 | - this.outboundChatFilters.add(outboundChatFilter); | ||
215 | - } | ||
216 | - | ||
217 | - /** | ||
218 | - * @param viewportListener | ||
219 | - */ | ||
220 | - public void addViewportListener(ViewportListener viewportListener) | ||
221 | - { | ||
222 | - this.viewportListeners.add(viewportListener); | ||
223 | - } | ||
224 | - | ||
225 | - /** | ||
226 | - * @param frameBufferListener | ||
227 | - */ | ||
228 | - public void addFrameBufferListener(FrameBufferListener frameBufferListener) | ||
229 | - { | ||
230 | - this.frameBufferListeners.add(frameBufferListener); | ||
231 | - } | ||
232 | - | ||
233 | - /** | ||
234 | - * @param screenshotListener | ||
235 | - */ | ||
236 | - public void addScreenshotListener(ScreenshotListener screenshotListener) | ||
237 | - { | ||
238 | - this.screenshotListeners.add(screenshotListener); | ||
239 | - } | ||
240 | - | ||
241 | - /** | ||
242 | - * @param entityRenderListener | ||
243 | - */ | ||
244 | - public void addEntityRenderListener(EntityRenderListener entityRenderListener) | ||
245 | - { | ||
246 | - this.entityRenderListeners.add(entityRenderListener); | ||
247 | - } | ||
248 | - | ||
249 | - /** | ||
250 | - * Late initialisation callback | ||
251 | - */ | ||
252 | - @Override | ||
253 | - protected void onStartupComplete() | ||
254 | - { | ||
255 | - this.engine.getResources().refreshResources(false); | ||
256 | - | ||
257 | - for (InitCompleteListener initMod : this.initListeners) | ||
258 | - { | ||
259 | - try | ||
260 | - { | ||
261 | - LoadingProgress.setMessage("Calling late init for mod %s...", initMod.getName()); | ||
262 | - LiteLoaderLogger.info("Calling late init for mod %s", initMod.getName()); | ||
263 | - initMod.onInitCompleted(this.engine.getClient(), this.loader); | ||
264 | - } | ||
265 | - catch (Throwable th) | ||
266 | - { | ||
267 | - this.mods.onLateInitFailed(initMod, th); | ||
268 | - LiteLoaderLogger.warning(th, "Error calling late init for mod %s", initMod.getName()); | ||
269 | - } | ||
270 | - } | ||
271 | - | ||
272 | - this.onResize(this.engineClient.getClient()); | ||
273 | - | ||
274 | - super.onStartupComplete(); | ||
275 | - } | ||
276 | - | ||
277 | - public void onResize(Minecraft minecraft) | ||
278 | - { | ||
279 | - ScaledResolution currentResolution = this.engineClient.getScaledResolution(); | ||
280 | - this.screenWidth = currentResolution.getScaledWidth(); | ||
281 | - this.screenHeight = currentResolution.getScaledHeight(); | ||
282 | - | ||
283 | - if (this.wasFullScreen != minecraft.isFullScreen()) | ||
284 | - { | ||
285 | - this.viewportListeners.all().onFullScreenToggled(minecraft.isFullScreen()); | ||
286 | - } | ||
287 | - | ||
288 | - this.wasFullScreen = minecraft.isFullScreen(); | ||
289 | - this.viewportListeners.all().onViewportResized(currentResolution, minecraft.displayWidth, minecraft.displayHeight); | ||
290 | - } | ||
291 | - | ||
292 | - /** | ||
293 | - * Callback from the tick hook, pre render | ||
294 | - */ | ||
295 | - void onRender() | ||
296 | - { | ||
297 | - this.renderListeners.all().onRender(); | ||
298 | - } | ||
299 | - | ||
300 | - /** | ||
301 | - * Callback from the tick hook, post render entities | ||
302 | - * | ||
303 | - * @param partialTicks | ||
304 | - * @param timeSlice | ||
305 | - */ | ||
306 | - void postRenderEntities(float partialTicks, long timeSlice) | ||
307 | - { | ||
308 | - this.postRenderListeners.all().onPostRenderEntities(partialTicks); | ||
309 | - } | ||
310 | - | ||
311 | - /** | ||
312 | - * Callback from the tick hook, post render | ||
313 | - * | ||
314 | - * @param partialTicks | ||
315 | - * @param timeSlice | ||
316 | - */ | ||
317 | - void postRender(float partialTicks, long timeSlice) | ||
318 | - { | ||
319 | - ((IEntityRenderer)this.engineClient.getClient().entityRenderer).setupCamera(partialTicks, 0); | ||
320 | - this.postRenderListeners.all().onPostRender(partialTicks); | ||
321 | - } | ||
322 | - | ||
323 | - /** | ||
324 | - * Called immediately before the current GUI is rendered | ||
325 | - */ | ||
326 | - void preRenderGUI(float partialTicks) | ||
327 | - { | ||
328 | - this.renderListeners.all().onRenderGui(this.engineClient.getCurrentScreen()); | ||
329 | - } | ||
330 | - | ||
331 | - /** | ||
332 | - * Called immediately after the world/camera transform is initialised | ||
333 | - * | ||
334 | - * @param pass | ||
335 | - * @param timeSlice | ||
336 | - * @param partialTicks | ||
337 | - */ | ||
338 | - void onSetupCameraTransform(int pass, float partialTicks, long timeSlice) | ||
339 | - { | ||
340 | - this.renderListeners.all().onSetupCameraTransform(); | ||
341 | - this.preRenderListeners.all().onSetupCameraTransform(partialTicks, pass, timeSlice); | ||
342 | - } | ||
343 | - | ||
344 | - /** | ||
345 | - * Called immediately before the chat log is rendered | ||
346 | - * | ||
347 | - * @param chatGui | ||
348 | - * @param partialTicks | ||
349 | - */ | ||
350 | - void onRenderChat(GuiNewChat chatGui, float partialTicks) | ||
351 | - { | ||
352 | - this.chatRenderListeners.all().onPreRenderChat(this.screenWidth, this.screenHeight, chatGui); | ||
353 | - } | ||
354 | - | ||
355 | - /** | ||
356 | - * Called immediately after the chat log is rendered | ||
357 | - * | ||
358 | - * @param chatGui | ||
359 | - * @param partialTicks | ||
360 | - */ | ||
361 | - void postRenderChat(GuiNewChat chatGui, float partialTicks) | ||
362 | - { | ||
363 | - GuiNewChat chat = this.engineClient.getChatGUI(); | ||
364 | - this.chatRenderListeners.all().onPostRenderChat(this.screenWidth, this.screenHeight, chat); | ||
365 | - } | ||
366 | - | ||
367 | - /** | ||
368 | - * Callback when about to render the HUD | ||
369 | - */ | ||
370 | - void onRenderHUD(float partialTicks) | ||
371 | - { | ||
372 | - this.hudRenderListeners.all().onPreRenderHUD(this.screenWidth, this.screenHeight); | ||
373 | - } | ||
374 | - | ||
375 | - /** | ||
376 | - * Callback when the HUD has just been rendered | ||
377 | - */ | ||
378 | - void postRenderHUD(float partialTicks) | ||
379 | - { | ||
380 | - this.hudRenderListeners.all().onPostRenderHUD(this.screenWidth, this.screenHeight); | ||
381 | - } | ||
382 | - | ||
383 | - /** | ||
384 | - * Callback from the tick hook, called every frame when the timer is updated | ||
385 | - */ | ||
386 | - void onTimerUpdate() | ||
387 | - { | ||
388 | - Minecraft minecraft = this.engine.getClient(); | ||
389 | - this.loopListeners.all().onRunGameLoop(minecraft); | ||
390 | - } | ||
391 | - | ||
392 | - /** | ||
393 | - * Callback from the tick hook, ticks all tickable mods | ||
394 | - */ | ||
395 | - void onTick() | ||
396 | - { | ||
397 | - this.profiler.endStartSection("litemods"); | ||
398 | - | ||
399 | - Timer minecraftTimer = ((IMinecraft)this.engine.getClient()).getTimer(); | ||
400 | - float partialTicks = minecraftTimer.renderPartialTicks; | ||
401 | - boolean clock = minecraftTimer.elapsedTicks > 0; | ||
402 | - | ||
403 | - Minecraft minecraft = this.engine.getClient(); | ||
404 | - | ||
405 | - // Flag indicates whether we are in game at the moment | ||
406 | - Entity renderViewEntity = minecraft.getRenderViewEntity(); // TODO OBF MCPTEST func_175606_aa - getRenderViewEntity | ||
407 | - boolean inGame = renderViewEntity != null && renderViewEntity.worldObj != null; | ||
408 | - | ||
409 | - this.profiler.startSection("loader"); | ||
410 | - super.onTick(clock, partialTicks, inGame); | ||
411 | - | ||
412 | - int mouseX = Mouse.getX() * this.screenWidth / minecraft.displayWidth; | ||
413 | - int mouseY = this.screenHeight - Mouse.getY() * this.screenHeight / minecraft.displayHeight - 1; | ||
414 | - this.profiler.endStartSection("postrender"); | ||
415 | - super.onPostRender(mouseX, mouseY, partialTicks); | ||
416 | - this.profiler.endSection(); | ||
417 | - | ||
418 | - // Iterate tickable mods | ||
419 | - this.tickListeners.all().onTick(minecraft, partialTicks, inGame, clock); | ||
420 | - | ||
421 | - // Detected world change | ||
422 | - int worldHashCode = (minecraft.theWorld != null) ? minecraft.theWorld.hashCode() : 0; | ||
423 | - if (worldHashCode != this.worldHashCode) | ||
424 | - { | ||
425 | - this.worldHashCode = worldHashCode; | ||
426 | - super.onWorldChanged(minecraft.theWorld); | ||
427 | - } | ||
428 | - } | ||
429 | - | ||
430 | - /** | ||
431 | - * @param packet | ||
432 | - * @param message | ||
433 | - */ | ||
434 | - void onSendChatMessage(C01PacketChatMessage packet, String message) | ||
435 | - { | ||
436 | - this.outboundChatListeners.all().onSendChatMessage(packet, message); | ||
437 | - } | ||
438 | - | ||
439 | - /** | ||
440 | - * @param message | ||
441 | - */ | ||
442 | - void onSendChatMessage(EventInfo<EntityPlayerSP> e, String message) | ||
443 | - { | ||
444 | - if (!this.outboundChatFilters.all().onSendChatMessage(message)) | ||
445 | - { | ||
446 | - e.cancel(); | ||
447 | - } | ||
448 | - } | ||
449 | - | ||
450 | - /** | ||
451 | - * @param framebuffer | ||
452 | - */ | ||
453 | - void preRenderFBO(Framebuffer framebuffer) | ||
454 | - { | ||
455 | - this.frameBufferListeners.all().preRenderFBO(framebuffer); | ||
456 | - } | ||
457 | - | ||
458 | - /** | ||
459 | - * @param framebuffer | ||
460 | - * @param width | ||
461 | - * @param height | ||
462 | - */ | ||
463 | - void onRenderFBO(Framebuffer framebuffer, int width, int height) | ||
464 | - { | ||
465 | - this.frameBufferListeners.all().onRenderFBO(framebuffer, width, height); | ||
466 | - } | ||
467 | - | ||
468 | - /** | ||
469 | - * @param framebuffer | ||
470 | - */ | ||
471 | - void postRenderFBO(Framebuffer framebuffer) | ||
472 | - { | ||
473 | - this.frameBufferListeners.all().postRenderFBO(framebuffer); | ||
474 | - } | ||
475 | - | ||
476 | - /** | ||
477 | - * @param partialTicks | ||
478 | - * @param timeSlice | ||
479 | - */ | ||
480 | - void onRenderWorld(float partialTicks, long timeSlice) | ||
481 | - { | ||
482 | - this.preRenderListeners.all().onRenderWorld(partialTicks); | ||
483 | - this.renderListeners.all().onRenderWorld(); | ||
484 | - } | ||
485 | - | ||
486 | - /** | ||
487 | - * @param partialTicks | ||
488 | - * @param pass | ||
489 | - * @param timeSlice | ||
490 | - */ | ||
491 | - void onRenderSky(float partialTicks, int pass, long timeSlice) | ||
492 | - { | ||
493 | - this.preRenderListeners.all().onRenderSky(partialTicks, pass); | ||
494 | - } | ||
495 | - | ||
496 | - /** | ||
497 | - * @param partialTicks | ||
498 | - * @param pass | ||
499 | - * @param renderGlobal | ||
500 | - */ | ||
501 | - void onRenderClouds(float partialTicks, int pass, RenderGlobal renderGlobal) | ||
502 | - { | ||
503 | - this.preRenderListeners.all().onRenderClouds(partialTicks, pass, renderGlobal); | ||
504 | - } | ||
505 | - | ||
506 | - /** | ||
507 | - * @param partialTicks | ||
508 | - * @param pass | ||
509 | - * @param timeSlice | ||
510 | - */ | ||
511 | - void onRenderTerrain(float partialTicks, int pass, long timeSlice) | ||
512 | - { | ||
513 | - this.preRenderListeners.all().onRenderTerrain(partialTicks, pass); | ||
514 | - } | ||
515 | - | ||
516 | - /** | ||
517 | - * @param e | ||
518 | - * @param name | ||
519 | - * @param width | ||
520 | - * @param height | ||
521 | - * @param fbo | ||
522 | - */ | ||
523 | - void onScreenshot(ReturnEventInfo<ScreenShotHelper, IChatComponent> e, String name, int width, int height, Framebuffer fbo) | ||
524 | - { | ||
525 | - ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(e.getReturnValue()); | ||
526 | - | ||
527 | - if (!this.screenshotListeners.all().onSaveScreenshot(name, width, height, fbo, ret)) | ||
528 | - { | ||
529 | - e.setReturnValue(ret.get()); | ||
530 | - } | ||
531 | - } | ||
532 | - | ||
533 | - /** | ||
534 | - * @param source | ||
535 | - * @param entity | ||
536 | - * @param xPos | ||
537 | - * @param yPos | ||
538 | - * @param zPos | ||
539 | - * @param yaw | ||
540 | - * @param partialTicks | ||
541 | - * @param render | ||
542 | - */ | ||
543 | - public void onRenderEntity(RenderManager source, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks, Render render) | ||
544 | - { | ||
545 | - this.entityRenderListeners.all().onRenderEntity(render, entity, xPos, yPos, zPos, yaw, partialTicks); | ||
546 | - } | ||
547 | - | ||
548 | - /** | ||
549 | - * @param source | ||
550 | - * @param entity | ||
551 | - * @param xPos | ||
552 | - * @param yPos | ||
553 | - * @param zPos | ||
554 | - * @param yaw | ||
555 | - * @param partialTicks | ||
556 | - * @param render | ||
557 | - */ | ||
558 | - public void onPostRenderEntity(RenderManager source, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks, Render render) | ||
559 | - { | ||
560 | - this.entityRenderListeners.all().onPostRenderEntity(render, entity, xPos, yPos, zPos, yaw, partialTicks); | ||
561 | - } | 39 | +{ |
40 | + private static LiteLoaderEventBrokerClient instance; | ||
41 | + | ||
42 | + /** | ||
43 | + * Reference to the game | ||
44 | + */ | ||
45 | + protected final GameEngineClient engineClient; | ||
46 | + | ||
47 | + /** | ||
48 | + * Current screen width | ||
49 | + */ | ||
50 | + private int screenWidth = 854; | ||
51 | + | ||
52 | + /** | ||
53 | + * Current screen height | ||
54 | + */ | ||
55 | + private int screenHeight = 480; | ||
56 | + | ||
57 | + /** | ||
58 | + * | ||
59 | + */ | ||
60 | + private boolean wasFullScreen = false; | ||
61 | + | ||
62 | + /** | ||
63 | + * Hash code of the current world. We don't store the world reference | ||
64 | + * here because we don't want to mess with world GC by mistake. | ||
65 | + */ | ||
66 | + private int worldHashCode = 0; | ||
67 | + | ||
68 | + private FastIterableDeque<Tickable> tickListeners; | ||
69 | + private FastIterableDeque<GameLoopListener> loopListeners = new HandlerList<GameLoopListener>(GameLoopListener.class); | ||
70 | + private FastIterableDeque<RenderListener> renderListeners = new HandlerList<RenderListener>(RenderListener.class); | ||
71 | + private FastIterableDeque<PreRenderListener> preRenderListeners = new HandlerList<PreRenderListener>(PreRenderListener.class); | ||
72 | + private FastIterableDeque<PostRenderListener> postRenderListeners = new HandlerList<PostRenderListener>(PostRenderListener.class); | ||
73 | + private FastIterableDeque<HUDRenderListener> hudRenderListeners = new HandlerList<HUDRenderListener>(HUDRenderListener.class); | ||
74 | + private FastIterableDeque<ChatRenderListener> chatRenderListeners = new HandlerList<ChatRenderListener>(ChatRenderListener.class); | ||
75 | + private FastIterableDeque<OutboundChatListener> outboundChatListeners = new HandlerList<OutboundChatListener>(OutboundChatListener.class); | ||
76 | + private FastIterableDeque<ViewportListener> viewportListeners = new HandlerList<ViewportListener>(ViewportListener.class); | ||
77 | + private FastIterableDeque<FrameBufferListener> frameBufferListeners = new HandlerList<FrameBufferListener>(FrameBufferListener.class); | ||
78 | + private FastIterableDeque<InitCompleteListener> initListeners = new HandlerList<InitCompleteListener>(InitCompleteListener.class); | ||
79 | + private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, | ||
80 | + ReturnLogicOp.AND); | ||
81 | + private FastIterableDeque<ScreenshotListener> screenshotListeners = new HandlerList<ScreenshotListener>(ScreenshotListener.class, | ||
82 | + ReturnLogicOp.AND_BREAK_ON_FALSE); | ||
83 | + private FastIterableDeque<EntityRenderListener> entityRenderListeners = new HandlerList<EntityRenderListener>(EntityRenderListener.class); | ||
84 | + | ||
85 | + @SuppressWarnings("cast") | ||
86 | + public LiteLoaderEventBrokerClient(LiteLoader loader, GameEngineClient engine, LoaderProperties properties) | ||
87 | + { | ||
88 | + super(loader, engine, properties); | ||
89 | + | ||
90 | + LiteLoaderEventBrokerClient.instance = this; | ||
91 | + | ||
92 | + this.engineClient = (GameEngineClient)engine; | ||
93 | + this.tickListeners = new ProfilingHandlerList<Tickable>(Tickable.class, this.engineClient.getProfiler()); | ||
94 | + } | ||
95 | + | ||
96 | + static LiteLoaderEventBrokerClient getInstance() | ||
97 | + { | ||
98 | + return LiteLoaderEventBrokerClient.instance; | ||
99 | + } | ||
100 | + | ||
101 | + @Override | ||
102 | + public void onResourceManagerReload(IResourceManager resourceManager) | ||
103 | + { | ||
104 | + LoadingProgress.setMessage("Reloading Resources..."); | ||
105 | + } | ||
106 | + | ||
107 | + /* (non-Javadoc) | ||
108 | + * @see com.mumfrey.liteloader.api.InterfaceProvider#registerInterfaces( | ||
109 | + * com.mumfrey.liteloader.core.InterfaceRegistrationDelegate) | ||
110 | + */ | ||
111 | + @Override | ||
112 | + public void registerInterfaces(InterfaceRegistrationDelegate delegate) | ||
113 | + { | ||
114 | + super.registerInterfaces(delegate); | ||
115 | + | ||
116 | + delegate.registerInterface(Tickable.class); | ||
117 | + delegate.registerInterface(GameLoopListener.class); | ||
118 | + delegate.registerInterface(RenderListener.class); | ||
119 | + delegate.registerInterface(PreRenderListener.class); | ||
120 | + delegate.registerInterface(PostRenderListener.class); | ||
121 | + delegate.registerInterface(HUDRenderListener.class); | ||
122 | + delegate.registerInterface(ChatRenderListener.class); | ||
123 | + delegate.registerInterface(OutboundChatListener.class); | ||
124 | + delegate.registerInterface(ViewportListener.class); | ||
125 | + delegate.registerInterface(FrameBufferListener.class); | ||
126 | + delegate.registerInterface(InitCompleteListener.class); | ||
127 | + delegate.registerInterface(OutboundChatFilter.class); | ||
128 | + delegate.registerInterface(ScreenshotListener.class); | ||
129 | + delegate.registerInterface(EntityRenderListener.class); | ||
130 | + } | ||
131 | + | ||
132 | + /* (non-Javadoc) | ||
133 | + * @see com.mumfrey.liteloader.api.InterfaceProvider#initProvider() | ||
134 | + */ | ||
135 | + @Override | ||
136 | + public void initProvider() | ||
137 | + { | ||
138 | + } | ||
139 | + | ||
140 | + /** | ||
141 | + * @param tickable | ||
142 | + */ | ||
143 | + public void addTickListener(Tickable tickable) | ||
144 | + { | ||
145 | + this.tickListeners.add(tickable); | ||
146 | + } | ||
147 | + | ||
148 | + /** | ||
149 | + * @param loopListener | ||
150 | + */ | ||
151 | + public void addLoopListener(GameLoopListener loopListener) | ||
152 | + { | ||
153 | + this.loopListeners.add(loopListener); | ||
154 | + } | ||
155 | + | ||
156 | + /** | ||
157 | + * @param initCompleteListener | ||
158 | + */ | ||
159 | + public void addInitListener(InitCompleteListener initCompleteListener) | ||
160 | + { | ||
161 | + this.initListeners.add(initCompleteListener); | ||
162 | + } | ||
163 | + | ||
164 | + /** | ||
165 | + * @param renderListener | ||
166 | + */ | ||
167 | + public void addRenderListener(RenderListener renderListener) | ||
168 | + { | ||
169 | + this.renderListeners.add(renderListener); | ||
170 | + } | ||
171 | + | ||
172 | + /** | ||
173 | + * @param preRenderListener | ||
174 | + */ | ||
175 | + public void addPreRenderListener(PreRenderListener preRenderListener) | ||
176 | + { | ||
177 | + this.preRenderListeners.add(preRenderListener); | ||
178 | + } | ||
179 | + | ||
180 | + /** | ||
181 | + * @param postRenderListener | ||
182 | + */ | ||
183 | + public void addPostRenderListener(PostRenderListener postRenderListener) | ||
184 | + { | ||
185 | + this.postRenderListeners.add(postRenderListener); | ||
186 | + } | ||
187 | + | ||
188 | + /** | ||
189 | + * @param chatRenderListener | ||
190 | + */ | ||
191 | + public void addChatRenderListener(ChatRenderListener chatRenderListener) | ||
192 | + { | ||
193 | + this.chatRenderListeners.add(chatRenderListener); | ||
194 | + } | ||
195 | + | ||
196 | + /** | ||
197 | + * @param hudRenderListener | ||
198 | + */ | ||
199 | + public void addHUDRenderListener(HUDRenderListener hudRenderListener) | ||
200 | + { | ||
201 | + this.hudRenderListeners.add(hudRenderListener); | ||
202 | + } | ||
203 | + | ||
204 | + /** | ||
205 | + * @param outboundChatListener | ||
206 | + */ | ||
207 | + public void addOutboundChatListener(OutboundChatListener outboundChatListener) | ||
208 | + { | ||
209 | + this.outboundChatListeners.add(outboundChatListener); | ||
210 | + } | ||
211 | + | ||
212 | + /** | ||
213 | + * @param outboundChatFilter | ||
214 | + */ | ||
215 | + public void addOutboundChatFiler(OutboundChatFilter outboundChatFilter) | ||
216 | + { | ||
217 | + this.outboundChatFilters.add(outboundChatFilter); | ||
218 | + } | ||
219 | + | ||
220 | + /** | ||
221 | + * @param viewportListener | ||
222 | + */ | ||
223 | + public void addViewportListener(ViewportListener viewportListener) | ||
224 | + { | ||
225 | + this.viewportListeners.add(viewportListener); | ||
226 | + } | ||
227 | + | ||
228 | + /** | ||
229 | + * @param frameBufferListener | ||
230 | + */ | ||
231 | + public void addFrameBufferListener(FrameBufferListener frameBufferListener) | ||
232 | + { | ||
233 | + this.frameBufferListeners.add(frameBufferListener); | ||
234 | + } | ||
235 | + | ||
236 | + /** | ||
237 | + * @param screenshotListener | ||
238 | + */ | ||
239 | + public void addScreenshotListener(ScreenshotListener screenshotListener) | ||
240 | + { | ||
241 | + this.screenshotListeners.add(screenshotListener); | ||
242 | + } | ||
243 | + | ||
244 | + /** | ||
245 | + * @param entityRenderListener | ||
246 | + */ | ||
247 | + public void addEntityRenderListener(EntityRenderListener entityRenderListener) | ||
248 | + { | ||
249 | + this.entityRenderListeners.add(entityRenderListener); | ||
250 | + } | ||
251 | + | ||
252 | + /** | ||
253 | + * Late initialisation callback | ||
254 | + */ | ||
255 | + @Override | ||
256 | + protected void onStartupComplete() | ||
257 | + { | ||
258 | + this.engine.getResources().refreshResources(false); | ||
259 | + | ||
260 | + for (InitCompleteListener initMod : this.initListeners) | ||
261 | + { | ||
262 | + try | ||
263 | + { | ||
264 | + LoadingProgress.setMessage("Calling late init for mod %s...", initMod.getName()); | ||
265 | + LiteLoaderLogger.info("Calling late init for mod %s", initMod.getName()); | ||
266 | + initMod.onInitCompleted(this.engine.getClient(), this.loader); | ||
267 | + } | ||
268 | + catch (Throwable th) | ||
269 | + { | ||
270 | + this.mods.onLateInitFailed(initMod, th); | ||
271 | + LiteLoaderLogger.warning(th, "Error calling late init for mod %s", initMod.getName()); | ||
272 | + } | ||
273 | + } | ||
274 | + | ||
275 | + this.onResize(this.engineClient.getClient()); | ||
276 | + | ||
277 | + super.onStartupComplete(); | ||
278 | + } | ||
279 | + | ||
280 | + public void onResize(Minecraft minecraft) | ||
281 | + { | ||
282 | + ScaledResolution currentResolution = this.engineClient.getScaledResolution(); | ||
283 | + this.screenWidth = currentResolution.getScaledWidth(); | ||
284 | + this.screenHeight = currentResolution.getScaledHeight(); | ||
285 | + | ||
286 | + if (this.wasFullScreen != minecraft.isFullScreen()) | ||
287 | + { | ||
288 | + this.viewportListeners.all().onFullScreenToggled(minecraft.isFullScreen()); | ||
289 | + } | ||
290 | + | ||
291 | + this.wasFullScreen = minecraft.isFullScreen(); | ||
292 | + this.viewportListeners.all().onViewportResized(currentResolution, minecraft.displayWidth, minecraft.displayHeight); | ||
293 | + } | ||
294 | + | ||
295 | + /** | ||
296 | + * Callback from the tick hook, pre render | ||
297 | + */ | ||
298 | + void onRender() | ||
299 | + { | ||
300 | + this.renderListeners.all().onRender(); | ||
301 | + } | ||
302 | + | ||
303 | + /** | ||
304 | + * Callback from the tick hook, post render entities | ||
305 | + * | ||
306 | + * @param partialTicks | ||
307 | + * @param timeSlice | ||
308 | + */ | ||
309 | + void postRenderEntities(float partialTicks, long timeSlice) | ||
310 | + { | ||
311 | + this.postRenderListeners.all().onPostRenderEntities(partialTicks); | ||
312 | + } | ||
313 | + | ||
314 | + /** | ||
315 | + * Callback from the tick hook, post render | ||
316 | + * | ||
317 | + * @param partialTicks | ||
318 | + * @param timeSlice | ||
319 | + */ | ||
320 | + void postRender(float partialTicks, long timeSlice) | ||
321 | + { | ||
322 | + ((IEntityRenderer)this.engineClient.getClient().entityRenderer).setupCamera(partialTicks, 0); | ||
323 | + this.postRenderListeners.all().onPostRender(partialTicks); | ||
324 | + } | ||
325 | + | ||
326 | + /** | ||
327 | + * Called immediately before the current GUI is rendered | ||
328 | + */ | ||
329 | + void preRenderGUI(float partialTicks) | ||
330 | + { | ||
331 | + this.renderListeners.all().onRenderGui(this.engineClient.getCurrentScreen()); | ||
332 | + } | ||
333 | + | ||
334 | + /** | ||
335 | + * Called immediately after the world/camera transform is initialised | ||
336 | + * | ||
337 | + * @param pass | ||
338 | + * @param timeSlice | ||
339 | + * @param partialTicks | ||
340 | + */ | ||
341 | + void onSetupCameraTransform(int pass, float partialTicks, long timeSlice) | ||
342 | + { | ||
343 | + this.renderListeners.all().onSetupCameraTransform(); | ||
344 | + this.preRenderListeners.all().onSetupCameraTransform(partialTicks, pass, timeSlice); | ||
345 | + } | ||
346 | + | ||
347 | + /** | ||
348 | + * Called immediately before the chat log is rendered | ||
349 | + * | ||
350 | + * @param chatGui | ||
351 | + * @param partialTicks | ||
352 | + */ | ||
353 | + void onRenderChat(GuiNewChat chatGui, float partialTicks) | ||
354 | + { | ||
355 | + this.chatRenderListeners.all().onPreRenderChat(this.screenWidth, this.screenHeight, chatGui); | ||
356 | + } | ||
357 | + | ||
358 | + /** | ||
359 | + * Called immediately after the chat log is rendered | ||
360 | + * | ||
361 | + * @param chatGui | ||
362 | + * @param partialTicks | ||
363 | + */ | ||
364 | + void postRenderChat(GuiNewChat chatGui, float partialTicks) | ||
365 | + { | ||
366 | + GuiNewChat chat = this.engineClient.getChatGUI(); | ||
367 | + this.chatRenderListeners.all().onPostRenderChat(this.screenWidth, this.screenHeight, chat); | ||
368 | + } | ||
369 | + | ||
370 | + /** | ||
371 | + * Callback when about to render the HUD | ||
372 | + */ | ||
373 | + void onRenderHUD(float partialTicks) | ||
374 | + { | ||
375 | + this.hudRenderListeners.all().onPreRenderHUD(this.screenWidth, this.screenHeight); | ||
376 | + } | ||
377 | + | ||
378 | + /** | ||
379 | + * Callback when the HUD has just been rendered | ||
380 | + */ | ||
381 | + void postRenderHUD(float partialTicks) | ||
382 | + { | ||
383 | + this.hudRenderListeners.all().onPostRenderHUD(this.screenWidth, this.screenHeight); | ||
384 | + } | ||
385 | + | ||
386 | + /** | ||
387 | + * Callback from the tick hook, called every frame when the timer is updated | ||
388 | + */ | ||
389 | + void onTimerUpdate() | ||
390 | + { | ||
391 | + Minecraft minecraft = this.engine.getClient(); | ||
392 | + this.loopListeners.all().onRunGameLoop(minecraft); | ||
393 | + } | ||
394 | + | ||
395 | + /** | ||
396 | + * Callback from the tick hook, ticks all tickable mods | ||
397 | + */ | ||
398 | + void onTick() | ||
399 | + { | ||
400 | + this.profiler.endStartSection("litemods"); | ||
401 | + | ||
402 | + Timer minecraftTimer = ((IMinecraft)this.engine.getClient()).getTimer(); | ||
403 | + float partialTicks = minecraftTimer.renderPartialTicks; | ||
404 | + boolean clock = minecraftTimer.elapsedTicks > 0; | ||
405 | + | ||
406 | + Minecraft minecraft = this.engine.getClient(); | ||
407 | + | ||
408 | + // Flag indicates whether we are in game at the moment | ||
409 | + Entity renderViewEntity = minecraft.getRenderViewEntity(); // TODO OBF MCPTEST func_175606_aa - getRenderViewEntity | ||
410 | + boolean inGame = renderViewEntity != null && renderViewEntity.worldObj != null; | ||
411 | + | ||
412 | + this.profiler.startSection("loader"); | ||
413 | + super.onTick(clock, partialTicks, inGame); | ||
414 | + | ||
415 | + int mouseX = Mouse.getX() * this.screenWidth / minecraft.displayWidth; | ||
416 | + int mouseY = this.screenHeight - Mouse.getY() * this.screenHeight / minecraft.displayHeight - 1; | ||
417 | + this.profiler.endStartSection("postrender"); | ||
418 | + super.onPostRender(mouseX, mouseY, partialTicks); | ||
419 | + this.profiler.endSection(); | ||
420 | + | ||
421 | + // Iterate tickable mods | ||
422 | + this.tickListeners.all().onTick(minecraft, partialTicks, inGame, clock); | ||
423 | + | ||
424 | + // Detected world change | ||
425 | + int worldHashCode = (minecraft.theWorld != null) ? minecraft.theWorld.hashCode() : 0; | ||
426 | + if (worldHashCode != this.worldHashCode) | ||
427 | + { | ||
428 | + this.worldHashCode = worldHashCode; | ||
429 | + super.onWorldChanged(minecraft.theWorld); | ||
430 | + } | ||
431 | + } | ||
432 | + | ||
433 | + /** | ||
434 | + * @param packet | ||
435 | + * @param message | ||
436 | + */ | ||
437 | + void onSendChatMessage(C01PacketChatMessage packet, String message) | ||
438 | + { | ||
439 | + this.outboundChatListeners.all().onSendChatMessage(packet, message); | ||
440 | + } | ||
441 | + | ||
442 | + /** | ||
443 | + * @param message | ||
444 | + */ | ||
445 | + void onSendChatMessage(EventInfo<EntityPlayerSP> e, String message) | ||
446 | + { | ||
447 | + if (!this.outboundChatFilters.all().onSendChatMessage(message)) | ||
448 | + { | ||
449 | + e.cancel(); | ||
450 | + } | ||
451 | + } | ||
452 | + | ||
453 | + /** | ||
454 | + * @param framebuffer | ||
455 | + */ | ||
456 | + void preRenderFBO(Framebuffer framebuffer) | ||
457 | + { | ||
458 | + this.frameBufferListeners.all().preRenderFBO(framebuffer); | ||
459 | + } | ||
460 | + | ||
461 | + /** | ||
462 | + * @param framebuffer | ||
463 | + * @param width | ||
464 | + * @param height | ||
465 | + */ | ||
466 | + void onRenderFBO(Framebuffer framebuffer, int width, int height) | ||
467 | + { | ||
468 | + this.frameBufferListeners.all().onRenderFBO(framebuffer, width, height); | ||
469 | + } | ||
470 | + | ||
471 | + /** | ||
472 | + * @param framebuffer | ||
473 | + */ | ||
474 | + void postRenderFBO(Framebuffer framebuffer) | ||
475 | + { | ||
476 | + this.frameBufferListeners.all().postRenderFBO(framebuffer); | ||
477 | + } | ||
478 | + | ||
479 | + /** | ||
480 | + * @param partialTicks | ||
481 | + * @param timeSlice | ||
482 | + */ | ||
483 | + void onRenderWorld(float partialTicks, long timeSlice) | ||
484 | + { | ||
485 | + this.preRenderListeners.all().onRenderWorld(partialTicks); | ||
486 | + this.renderListeners.all().onRenderWorld(); | ||
487 | + } | ||
488 | + | ||
489 | + /** | ||
490 | + * @param partialTicks | ||
491 | + * @param pass | ||
492 | + * @param timeSlice | ||
493 | + */ | ||
494 | + void onRenderSky(float partialTicks, int pass, long timeSlice) | ||
495 | + { | ||
496 | + this.preRenderListeners.all().onRenderSky(partialTicks, pass); | ||
497 | + } | ||
498 | + | ||
499 | + /** | ||
500 | + * @param partialTicks | ||
501 | + * @param pass | ||
502 | + * @param renderGlobal | ||
503 | + */ | ||
504 | + void onRenderClouds(float partialTicks, int pass, RenderGlobal renderGlobal) | ||
505 | + { | ||
506 | + this.preRenderListeners.all().onRenderClouds(partialTicks, pass, renderGlobal); | ||
507 | + } | ||
508 | + | ||
509 | + /** | ||
510 | + * @param partialTicks | ||
511 | + * @param pass | ||
512 | + * @param timeSlice | ||
513 | + */ | ||
514 | + void onRenderTerrain(float partialTicks, int pass, long timeSlice) | ||
515 | + { | ||
516 | + this.preRenderListeners.all().onRenderTerrain(partialTicks, pass); | ||
517 | + } | ||
518 | + | ||
519 | + /** | ||
520 | + * @param e | ||
521 | + * @param name | ||
522 | + * @param width | ||
523 | + * @param height | ||
524 | + * @param fbo | ||
525 | + */ | ||
526 | + void onScreenshot(ReturnEventInfo<ScreenShotHelper, IChatComponent> e, String name, int width, int height, Framebuffer fbo) | ||
527 | + { | ||
528 | + ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(e.getReturnValue()); | ||
529 | + | ||
530 | + if (!this.screenshotListeners.all().onSaveScreenshot(name, width, height, fbo, ret)) | ||
531 | + { | ||
532 | + e.setReturnValue(ret.get()); | ||
533 | + } | ||
534 | + } | ||
535 | + | ||
536 | + /** | ||
537 | + * @param source | ||
538 | + * @param entity | ||
539 | + * @param xPos | ||
540 | + * @param yPos | ||
541 | + * @param zPos | ||
542 | + * @param yaw | ||
543 | + * @param partialTicks | ||
544 | + * @param render | ||
545 | + */ | ||
546 | + public void onRenderEntity(RenderManager source, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks, | ||
547 | + Render render) | ||
548 | + { | ||
549 | + this.entityRenderListeners.all().onRenderEntity(render, entity, xPos, yPos, zPos, yaw, partialTicks); | ||
550 | + } | ||
551 | + | ||
552 | + /** | ||
553 | + * @param source | ||
554 | + * @param entity | ||
555 | + * @param xPos | ||
556 | + * @param yPos | ||
557 | + * @param zPos | ||
558 | + * @param yaw | ||
559 | + * @param partialTicks | ||
560 | + * @param render | ||
561 | + */ | ||
562 | + public void onPostRenderEntity(RenderManager source, Entity entity, double xPos, double yPos, double zPos, float yaw, float partialTicks, | ||
563 | + Render render) | ||
564 | + { | ||
565 | + this.entityRenderListeners.all().onPostRenderEntity(render, entity, xPos, yPos, zPos, yaw, partialTicks); | ||
566 | + } | ||
562 | } | 567 | } |
src/client/java/com/mumfrey/liteloader/client/LiteLoaderPanelManager.java
@@ -27,261 +27,268 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | @@ -27,261 +27,268 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | ||
27 | */ | 27 | */ |
28 | public class LiteLoaderPanelManager implements PanelManager<GuiScreen> | 28 | public class LiteLoaderPanelManager implements PanelManager<GuiScreen> |
29 | { | 29 | { |
30 | - private final LoaderEnvironment environment; | ||
31 | - | ||
32 | - /** | ||
33 | - * Loader Properties adapter | ||
34 | - */ | ||
35 | - private final LoaderProperties properties; | ||
36 | - | ||
37 | - private LiteLoaderMods mods; | ||
38 | - | ||
39 | - private ConfigManager configManager; | ||
40 | - | ||
41 | - private Minecraft minecraft; | ||
42 | - | ||
43 | - /** | ||
44 | - * Setting which determines whether we show the "mod info" screen tab in the main menu | ||
45 | - */ | ||
46 | - private boolean displayModInfoScreenTab = true; | ||
47 | - | ||
48 | - /** | ||
49 | - * Don't hide t | ||
50 | - */ | ||
51 | - private boolean tabAlwaysExpanded = false; | ||
52 | - | ||
53 | - /** | ||
54 | - * Override for the "mod info" tab setting, so that mods which want to handle the mod info themselves | ||
55 | - * can temporarily disable the function without having to change the underlying property | ||
56 | - */ | ||
57 | - private boolean hideModInfoScreenTab = false; | ||
58 | - | ||
59 | - private boolean checkForUpdate = false; | ||
60 | - | ||
61 | - private String notification; | ||
62 | - | ||
63 | - /** | ||
64 | - * Active "mod info" screen, drawn as an overlay when in the main menu and made the active screen if | ||
65 | - * the user clicks the tab | ||
66 | - */ | ||
67 | - private GuiLiteLoaderPanel panelHost; | ||
68 | - | ||
69 | - /** | ||
70 | - * @param environment | ||
71 | - * @param properties | ||
72 | - */ | ||
73 | - @SuppressWarnings("unchecked") | ||
74 | - public LiteLoaderPanelManager(GameEngine<?, ?> engine, LoaderEnvironment environment, LoaderProperties properties) | ||
75 | - { | ||
76 | - this.environment = environment; | ||
77 | - this.properties = properties; | ||
78 | - this.minecraft = ((GameEngine<Minecraft, ?>)engine).getClient(); | ||
79 | - | ||
80 | - this.displayModInfoScreenTab = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_MOD_INFO_SCREEN, true); | ||
81 | - this.tabAlwaysExpanded = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_NO_HIDE_TAB, false); | ||
82 | - | ||
83 | - if (this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_FORCE_UPDATE, false)) | ||
84 | - { | ||
85 | - int updateCheckInterval = this.properties.getIntegerProperty(LoaderProperties.OPTION_UPDATE_CHECK_INTR) + 1; | ||
86 | - LiteLoaderLogger.debug("Force update is TRUE, updateCheckInterval = %d", updateCheckInterval); | ||
87 | - | ||
88 | - if (updateCheckInterval > 10) | ||
89 | - { | ||
90 | - LiteLoaderLogger.debug("Forcing update check!"); | ||
91 | - this.checkForUpdate = true; | ||
92 | - updateCheckInterval = 0; | ||
93 | - } | ||
94 | - | ||
95 | - this.properties.setIntegerProperty(LoaderProperties.OPTION_UPDATE_CHECK_INTR, updateCheckInterval); | ||
96 | - this.properties.writeProperties(); | ||
97 | - } | ||
98 | - } | ||
99 | - | ||
100 | - @Override | ||
101 | - public void init(LiteLoaderMods mods, ConfigManager configManager) | ||
102 | - { | ||
103 | - this.mods = mods; | ||
104 | - this.configManager = configManager; | ||
105 | - } | ||
106 | - | ||
107 | - @Override | ||
108 | - public void onStartupComplete() | ||
109 | - { | ||
110 | - if (this.checkForUpdate) | ||
111 | - { | ||
112 | - LiteLoaderVersion.getUpdateSite().beginUpdateCheck(); | ||
113 | - } | ||
114 | - } | ||
115 | - | ||
116 | - /* (non-Javadoc) | ||
117 | - * @see com.mumfrey.liteloader.api.TickObserver#onTick(boolean, float, boolean) | ||
118 | - */ | ||
119 | - @Override | ||
120 | - public void onTick(boolean clock, float partialTicks, boolean inGame) | ||
121 | - { | ||
122 | - if (clock && this.panelHost != null && this.minecraft.currentScreen != this.panelHost) | ||
123 | - { | ||
124 | - this.panelHost.updateScreen(); | ||
125 | - } | ||
126 | - | ||
127 | - if (clock && this.checkForUpdate) | ||
128 | - { | ||
129 | - LiteLoaderUpdateSite updateSite = LiteLoaderVersion.getUpdateSite(); | ||
130 | - if (!updateSite.isCheckInProgress() && updateSite.isCheckComplete()) | ||
131 | - { | ||
132 | - LiteLoaderLogger.debug("Scheduled update check completed, success=%s", updateSite.isCheckSucceess()); | ||
133 | - this.checkForUpdate = false; | ||
134 | - if (updateSite.isCheckSucceess() && updateSite.isUpdateAvailable()) | ||
135 | - { | ||
136 | - this.setNotification(I18n.format("gui.notifications.updateavailable")); | ||
137 | - } | ||
138 | - } | ||
139 | - } | ||
140 | - } | ||
141 | - | ||
142 | - /* (non-Javadoc) | ||
143 | - * @see com.mumfrey.liteloader.api.PostRenderObserver#onPostRender(int, int, float) | ||
144 | - */ | ||
145 | - @Override | ||
146 | - public void onPostRender(int mouseX, int mouseY, float partialTicks) | ||
147 | - { | ||
148 | - if (this.mods == null) return; | ||
149 | - | ||
150 | - boolean tabHidden = this.isTabHidden() && this.minecraft.currentScreen instanceof GuiMainMenu; | ||
151 | - | ||
152 | - if (this.isPanelSupportedOnScreen(this.minecraft.currentScreen) && ((this.displayModInfoScreenTab && !tabHidden) || (this.panelHost != null && this.panelHost.isOpen()))) | ||
153 | - { | ||
154 | - // If we're at the main menu, prepare the overlay | ||
155 | - if (this.panelHost == null || this.panelHost.getScreen() != this.minecraft.currentScreen) | ||
156 | - { | ||
157 | - this.panelHost = new GuiLiteLoaderPanel(this.minecraft, this.minecraft.currentScreen, this.mods, this.environment, this.properties, this.configManager, !tabHidden); | ||
158 | - if (this.notification != null) | ||
159 | - { | ||
160 | - this.panelHost.setNotification(this.notification); | ||
161 | - } | ||
162 | - } | ||
163 | - | ||
164 | - this.minecraft.entityRenderer.setupOverlayRendering(); | ||
165 | - this.panelHost.drawScreen(mouseX, mouseY, partialTicks, this.tabAlwaysExpanded); | ||
166 | - } | ||
167 | - else if (this.minecraft.currentScreen != this.panelHost && this.panelHost != null) | ||
168 | - { | ||
169 | - // If we're in any other screen, kill the overlay | ||
170 | - this.panelHost.release(); | ||
171 | - this.panelHost = null; | ||
172 | - } | ||
173 | - else if (this.isPanelSupportedOnScreen(this.minecraft.currentScreen) && Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && Keyboard.isKeyDown(Keyboard.KEY_TAB)) | ||
174 | - { | ||
175 | - this.displayLiteLoaderPanel(this.minecraft.currentScreen); | ||
176 | - } | ||
177 | - } | ||
178 | - | ||
179 | - /** | ||
180 | - * Set the "mod info" screen tab to hidden, regardless of the property setting | ||
181 | - */ | ||
182 | - @Override | ||
183 | - public void hideTab() | ||
184 | - { | ||
185 | - this.hideModInfoScreenTab = true; | ||
186 | - } | ||
187 | - | ||
188 | - private boolean isTabHidden() | ||
189 | - { | ||
190 | - return this.hideModInfoScreenTab && this.getStartupErrorCount() == 0 && this.notification == null; | ||
191 | - } | ||
192 | - | ||
193 | - /** | ||
194 | - * Set whether the "mod info" screen tab should be shown in the main menu | ||
195 | - */ | ||
196 | - @Override | ||
197 | - public void setTabVisible(boolean show) | ||
198 | - { | ||
199 | - this.displayModInfoScreenTab = show; | ||
200 | - this.properties.setBooleanProperty(LoaderProperties.OPTION_MOD_INFO_SCREEN, show); | ||
201 | - this.properties.writeProperties(); | ||
202 | - } | ||
203 | - | ||
204 | - /** | ||
205 | - * Get whether the "mod info" screen tab is shown in the main menu | ||
206 | - */ | ||
207 | - @Override | ||
208 | - public boolean isTabVisible() | ||
209 | - { | ||
210 | - return this.displayModInfoScreenTab; | ||
211 | - } | ||
212 | - | ||
213 | - @Override | ||
214 | - public void setTabAlwaysExpanded(boolean expand) | ||
215 | - { | ||
216 | - this.tabAlwaysExpanded = expand; | ||
217 | - this.properties.setBooleanProperty(LoaderProperties.OPTION_NO_HIDE_TAB, expand); | ||
218 | - this.properties.writeProperties(); | ||
219 | - } | ||
220 | - | ||
221 | - @Override | ||
222 | - public boolean isTabAlwaysExpanded() | ||
223 | - { | ||
224 | - return this.tabAlwaysExpanded; | ||
225 | - } | ||
226 | - | ||
227 | - @Override | ||
228 | - public void setForceUpdateEnabled(boolean forceUpdate) | ||
229 | - { | ||
230 | - this.properties.setBooleanProperty(LoaderProperties.OPTION_FORCE_UPDATE, forceUpdate); | ||
231 | - this.properties.writeProperties(); | ||
232 | - } | ||
233 | - | ||
234 | - @Override | ||
235 | - public boolean isForceUpdateEnabled() | ||
236 | - { | ||
237 | - return this.properties.getBooleanProperty(LoaderProperties.OPTION_FORCE_UPDATE); | ||
238 | - } | ||
239 | - | ||
240 | - /** | ||
241 | - * Display the liteloader panel over the specified GUI | ||
242 | - * | ||
243 | - * @param parentScreen | ||
244 | - */ | ||
245 | - @Override | ||
246 | - public void displayLiteLoaderPanel(GuiScreen parentScreen) | ||
247 | - { | ||
248 | - if (this.isPanelSupportedOnScreen(parentScreen)) | ||
249 | - { | ||
250 | - this.panelHost = new GuiLiteLoaderPanel(this.minecraft, parentScreen, this.mods, this.environment, this.properties, this.configManager, !this.isTabHidden()); | ||
251 | - this.minecraft.displayGuiScreen(this.panelHost); | ||
252 | - } | ||
253 | - } | ||
254 | - | ||
255 | - @Override | ||
256 | - public int getStartupErrorCount() | ||
257 | - { | ||
258 | - return this.mods.getStartupErrorCount(); | ||
259 | - } | ||
260 | - | ||
261 | - @Override | ||
262 | - public int getCriticalErrorCount() | ||
263 | - { | ||
264 | - return this.mods.getCriticalErrorCount(); | ||
265 | - } | ||
266 | - | ||
267 | - @Override | ||
268 | - public void setNotification(String notification) | ||
269 | - { | ||
270 | - LiteLoaderLogger.debug("Setting notification: " + notification); | ||
271 | - this.notification = notification; | ||
272 | - | ||
273 | - if (this.panelHost != null) | ||
274 | - { | ||
275 | - this.panelHost.setNotification(notification); | ||
276 | - } | ||
277 | - } | ||
278 | - | ||
279 | - private boolean isPanelSupportedOnScreen(GuiScreen guiScreen) | ||
280 | - { | ||
281 | - return ( | ||
282 | - guiScreen instanceof GuiMainMenu || | ||
283 | - guiScreen instanceof GuiIngameMenu || | ||
284 | - guiScreen instanceof GuiOptions | ||
285 | - ); | ||
286 | - } | 30 | + private final LoaderEnvironment environment; |
31 | + | ||
32 | + /** | ||
33 | + * Loader Properties adapter | ||
34 | + */ | ||
35 | + private final LoaderProperties properties; | ||
36 | + | ||
37 | + private LiteLoaderMods mods; | ||
38 | + | ||
39 | + private ConfigManager configManager; | ||
40 | + | ||
41 | + private Minecraft minecraft; | ||
42 | + | ||
43 | + /** | ||
44 | + * Setting which determines whether we show the "mod info" screen tab in the | ||
45 | + * main menu. | ||
46 | + */ | ||
47 | + private boolean displayModInfoScreenTab = true; | ||
48 | + | ||
49 | + /** | ||
50 | + * Don't hide t | ||
51 | + */ | ||
52 | + private boolean tabAlwaysExpanded = false; | ||
53 | + | ||
54 | + /** | ||
55 | + * Override for the "mod info" tab setting, so that mods which want to | ||
56 | + * handle the mod info themselves can temporarily disable the function | ||
57 | + * without having to change the underlying property. | ||
58 | + */ | ||
59 | + private boolean hideModInfoScreenTab = false; | ||
60 | + | ||
61 | + private boolean checkForUpdate = false; | ||
62 | + | ||
63 | + private String notification; | ||
64 | + | ||
65 | + /** | ||
66 | + * Active "mod info" screen, drawn as an overlay when in the main menu and | ||
67 | + * made the active screen if the user clicks the tab. | ||
68 | + */ | ||
69 | + private GuiLiteLoaderPanel panelHost; | ||
70 | + | ||
71 | + /** | ||
72 | + * @param environment | ||
73 | + * @param properties | ||
74 | + */ | ||
75 | + @SuppressWarnings("unchecked") | ||
76 | + public LiteLoaderPanelManager(GameEngine<?, ?> engine, LoaderEnvironment environment, LoaderProperties properties) | ||
77 | + { | ||
78 | + this.environment = environment; | ||
79 | + this.properties = properties; | ||
80 | + this.minecraft = ((GameEngine<Minecraft, ?>)engine).getClient(); | ||
81 | + | ||
82 | + this.displayModInfoScreenTab = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_MOD_INFO_SCREEN, true); | ||
83 | + this.tabAlwaysExpanded = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_NO_HIDE_TAB, false); | ||
84 | + | ||
85 | + if (this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_FORCE_UPDATE, false)) | ||
86 | + { | ||
87 | + int updateCheckInterval = this.properties.getIntegerProperty(LoaderProperties.OPTION_UPDATE_CHECK_INTR) + 1; | ||
88 | + LiteLoaderLogger.debug("Force update is TRUE, updateCheckInterval = %d", updateCheckInterval); | ||
89 | + | ||
90 | + if (updateCheckInterval > 10) | ||
91 | + { | ||
92 | + LiteLoaderLogger.debug("Forcing update check!"); | ||
93 | + this.checkForUpdate = true; | ||
94 | + updateCheckInterval = 0; | ||
95 | + } | ||
96 | + | ||
97 | + this.properties.setIntegerProperty(LoaderProperties.OPTION_UPDATE_CHECK_INTR, updateCheckInterval); | ||
98 | + this.properties.writeProperties(); | ||
99 | + } | ||
100 | + } | ||
101 | + | ||
102 | + @Override | ||
103 | + public void init(LiteLoaderMods mods, ConfigManager configManager) | ||
104 | + { | ||
105 | + this.mods = mods; | ||
106 | + this.configManager = configManager; | ||
107 | + } | ||
108 | + | ||
109 | + @Override | ||
110 | + public void onStartupComplete() | ||
111 | + { | ||
112 | + if (this.checkForUpdate) | ||
113 | + { | ||
114 | + LiteLoaderVersion.getUpdateSite().beginUpdateCheck(); | ||
115 | + } | ||
116 | + } | ||
117 | + | ||
118 | + /* (non-Javadoc) | ||
119 | + * @see com.mumfrey.liteloader.api.TickObserver | ||
120 | + * #onTick(boolean, float, boolean) | ||
121 | + */ | ||
122 | + @Override | ||
123 | + public void onTick(boolean clock, float partialTicks, boolean inGame) | ||
124 | + { | ||
125 | + if (clock && this.panelHost != null && this.minecraft.currentScreen != this.panelHost) | ||
126 | + { | ||
127 | + this.panelHost.updateScreen(); | ||
128 | + } | ||
129 | + | ||
130 | + if (clock && this.checkForUpdate) | ||
131 | + { | ||
132 | + LiteLoaderUpdateSite updateSite = LiteLoaderVersion.getUpdateSite(); | ||
133 | + if (!updateSite.isCheckInProgress() && updateSite.isCheckComplete()) | ||
134 | + { | ||
135 | + LiteLoaderLogger.debug("Scheduled update check completed, success=%s", updateSite.isCheckSucceess()); | ||
136 | + this.checkForUpdate = false; | ||
137 | + if (updateSite.isCheckSucceess() && updateSite.isUpdateAvailable()) | ||
138 | + { | ||
139 | + this.setNotification(I18n.format("gui.notifications.updateavailable")); | ||
140 | + } | ||
141 | + } | ||
142 | + } | ||
143 | + } | ||
144 | + | ||
145 | + /* (non-Javadoc) | ||
146 | + * @see com.mumfrey.liteloader.api.PostRenderObserver | ||
147 | + * #onPostRender(int, int, float) | ||
148 | + */ | ||
149 | + @Override | ||
150 | + public void onPostRender(int mouseX, int mouseY, float partialTicks) | ||
151 | + { | ||
152 | + if (this.mods == null) return; | ||
153 | + | ||
154 | + boolean tabHidden = this.isTabHidden() && this.minecraft.currentScreen instanceof GuiMainMenu; | ||
155 | + | ||
156 | + if (this.isPanelSupportedOnScreen(this.minecraft.currentScreen) | ||
157 | + && ((this.displayModInfoScreenTab && !tabHidden) || (this.panelHost != null && this.panelHost.isOpen()))) | ||
158 | + { | ||
159 | + // If we're at the main menu, prepare the overlay | ||
160 | + if (this.panelHost == null || this.panelHost.getScreen() != this.minecraft.currentScreen) | ||
161 | + { | ||
162 | + this.panelHost = new GuiLiteLoaderPanel(this.minecraft, this.minecraft.currentScreen, this.mods, this.environment, this.properties, | ||
163 | + this.configManager, !tabHidden); | ||
164 | + if (this.notification != null) | ||
165 | + { | ||
166 | + this.panelHost.setNotification(this.notification); | ||
167 | + } | ||
168 | + } | ||
169 | + | ||
170 | + this.minecraft.entityRenderer.setupOverlayRendering(); | ||
171 | + this.panelHost.drawScreen(mouseX, mouseY, partialTicks, this.tabAlwaysExpanded); | ||
172 | + } | ||
173 | + else if (this.minecraft.currentScreen != this.panelHost && this.panelHost != null) | ||
174 | + { | ||
175 | + // If we're in any other screen, kill the overlay | ||
176 | + this.panelHost.release(); | ||
177 | + this.panelHost = null; | ||
178 | + } | ||
179 | + else if (this.isPanelSupportedOnScreen(this.minecraft.currentScreen) | ||
180 | + && Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) | ||
181 | + && Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) | ||
182 | + && Keyboard.isKeyDown(Keyboard.KEY_TAB)) | ||
183 | + { | ||
184 | + this.displayLiteLoaderPanel(this.minecraft.currentScreen); | ||
185 | + } | ||
186 | + } | ||
187 | + | ||
188 | + /** | ||
189 | + * Set the "mod info" screen tab to hidden, regardless of the property | ||
190 | + * setting. | ||
191 | + */ | ||
192 | + @Override | ||
193 | + public void hideTab() | ||
194 | + { | ||
195 | + this.hideModInfoScreenTab = true; | ||
196 | + } | ||
197 | + | ||
198 | + private boolean isTabHidden() | ||
199 | + { | ||
200 | + return this.hideModInfoScreenTab && this.getStartupErrorCount() == 0 && this.notification == null; | ||
201 | + } | ||
202 | + | ||
203 | + /** | ||
204 | + * Set whether the "mod info" screen tab should be shown in the main menu | ||
205 | + */ | ||
206 | + @Override | ||
207 | + public void setTabVisible(boolean show) | ||
208 | + { | ||
209 | + this.displayModInfoScreenTab = show; | ||
210 | + this.properties.setBooleanProperty(LoaderProperties.OPTION_MOD_INFO_SCREEN, show); | ||
211 | + this.properties.writeProperties(); | ||
212 | + } | ||
213 | + | ||
214 | + /** | ||
215 | + * Get whether the "mod info" screen tab is shown in the main menu | ||
216 | + */ | ||
217 | + @Override | ||
218 | + public boolean isTabVisible() | ||
219 | + { | ||
220 | + return this.displayModInfoScreenTab; | ||
221 | + } | ||
222 | + | ||
223 | + @Override | ||
224 | + public void setTabAlwaysExpanded(boolean expand) | ||
225 | + { | ||
226 | + this.tabAlwaysExpanded = expand; | ||
227 | + this.properties.setBooleanProperty(LoaderProperties.OPTION_NO_HIDE_TAB, expand); | ||
228 | + this.properties.writeProperties(); | ||
229 | + } | ||
230 | + | ||
231 | + @Override | ||
232 | + public boolean isTabAlwaysExpanded() | ||
233 | + { | ||
234 | + return this.tabAlwaysExpanded; | ||
235 | + } | ||
236 | + | ||
237 | + @Override | ||
238 | + public void setForceUpdateEnabled(boolean forceUpdate) | ||
239 | + { | ||
240 | + this.properties.setBooleanProperty(LoaderProperties.OPTION_FORCE_UPDATE, forceUpdate); | ||
241 | + this.properties.writeProperties(); | ||
242 | + } | ||
243 | + | ||
244 | + @Override | ||
245 | + public boolean isForceUpdateEnabled() | ||
246 | + { | ||
247 | + return this.properties.getBooleanProperty(LoaderProperties.OPTION_FORCE_UPDATE); | ||
248 | + } | ||
249 | + | ||
250 | + /** | ||
251 | + * Display the liteloader panel over the specified GUI | ||
252 | + * | ||
253 | + * @param parentScreen | ||
254 | + */ | ||
255 | + @Override | ||
256 | + public void displayLiteLoaderPanel(GuiScreen parentScreen) | ||
257 | + { | ||
258 | + if (this.isPanelSupportedOnScreen(parentScreen)) | ||
259 | + { | ||
260 | + this.panelHost = new GuiLiteLoaderPanel(this.minecraft, parentScreen, this.mods, this.environment, this.properties, | ||
261 | + this.configManager, !this.isTabHidden()); | ||
262 | + this.minecraft.displayGuiScreen(this.panelHost); | ||
263 | + } | ||
264 | + } | ||
265 | + | ||
266 | + @Override | ||
267 | + public int getStartupErrorCount() | ||
268 | + { | ||
269 | + return this.mods.getStartupErrorCount(); | ||
270 | + } | ||
271 | + | ||
272 | + @Override | ||
273 | + public int getCriticalErrorCount() | ||
274 | + { | ||
275 | + return this.mods.getCriticalErrorCount(); | ||
276 | + } | ||
277 | + | ||
278 | + @Override | ||
279 | + public void setNotification(String notification) | ||
280 | + { | ||
281 | + LiteLoaderLogger.debug("Setting notification: " + notification); | ||
282 | + this.notification = notification; | ||
283 | + | ||
284 | + if (this.panelHost != null) | ||
285 | + { | ||
286 | + this.panelHost.setNotification(notification); | ||
287 | + } | ||
288 | + } | ||
289 | + | ||
290 | + private boolean isPanelSupportedOnScreen(GuiScreen guiScreen) | ||
291 | + { | ||
292 | + return (guiScreen instanceof GuiMainMenu || guiScreen instanceof GuiIngameMenu || guiScreen instanceof GuiOptions); | ||
293 | + } | ||
287 | } | 294 | } |
src/client/java/com/mumfrey/liteloader/client/PacketEventsClient.java
@@ -43,212 +43,226 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | @@ -43,212 +43,226 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | ||
43 | */ | 43 | */ |
44 | public class PacketEventsClient extends PacketEvents | 44 | public class PacketEventsClient extends PacketEvents |
45 | { | 45 | { |
46 | - private static RealmsServer joiningRealm; | ||
47 | - | ||
48 | - private FastIterableDeque<JoinGameListener> joinGameListeners = new HandlerList<JoinGameListener>(JoinGameListener.class); | ||
49 | - private FastIterableDeque<ChatListener> chatListeners = new HandlerList<ChatListener>(ChatListener.class); | ||
50 | - private FastIterableDeque<ChatFilter> chatFilters = new HandlerList<ChatFilter>(ChatFilter.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | ||
51 | - private FastIterableDeque<PreJoinGameListener> preJoinGameListeners = new HandlerList<PreJoinGameListener>(PreJoinGameListener.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | ||
52 | - private FastIterableDeque<PostLoginListener> postLoginListeners = new HandlerList<PostLoginListener>(PostLoginListener.class); | ||
53 | - | ||
54 | - @Override | ||
55 | - public void registerInterfaces(InterfaceRegistrationDelegate delegate) | ||
56 | - { | ||
57 | - super.registerInterfaces(delegate); | ||
58 | - | ||
59 | - delegate.registerInterface(JoinGameListener.class); | ||
60 | - delegate.registerInterface(ChatListener.class); | ||
61 | - delegate.registerInterface(ChatFilter.class); | ||
62 | - delegate.registerInterface(PreJoinGameListener.class); | ||
63 | - delegate.registerInterface(PostLoginListener.class); | ||
64 | - } | ||
65 | - | ||
66 | - /** | ||
67 | - * @param joinGameListener | ||
68 | - */ | ||
69 | - public void registerJoinGameListener(JoinGameListener joinGameListener) | ||
70 | - { | ||
71 | - this.joinGameListeners.add(joinGameListener); | ||
72 | - } | ||
73 | - | ||
74 | - /** | ||
75 | - * @param chatFilter | ||
76 | - */ | ||
77 | - public void registerChatFilter(ChatFilter chatFilter) | ||
78 | - { | ||
79 | - this.chatFilters.add(chatFilter); | ||
80 | - } | ||
81 | - | ||
82 | - /** | ||
83 | - * @param chatListener | ||
84 | - */ | ||
85 | - public void registerChatListener(ChatListener chatListener) | ||
86 | - { | ||
87 | - if (chatListener instanceof ChatFilter) | ||
88 | - { | ||
89 | - LiteLoaderLogger.warning("Interface error initialising mod '%1s'. A mod implementing ChatFilter and ChatListener is not supported! Remove one of these interfaces", chatListener.getName()); | ||
90 | - } | ||
91 | - else | ||
92 | - { | ||
93 | - this.chatListeners.add(chatListener); | ||
94 | - } | ||
95 | - } | ||
96 | - | ||
97 | - /** | ||
98 | - * @param joinGameListener | ||
99 | - */ | ||
100 | - public void registerPreJoinGameListener(PreJoinGameListener joinGameListener) | ||
101 | - { | ||
102 | - this.preJoinGameListeners.add(joinGameListener); | ||
103 | - } | ||
104 | - | ||
105 | - /** | ||
106 | - * @param postLoginListener | ||
107 | - */ | ||
108 | - public void registerPostLoginListener(PostLoginListener postLoginListener) | ||
109 | - { | ||
110 | - this.postLoginListeners.add(postLoginListener); | ||
111 | - } | ||
112 | - | ||
113 | - public static void onJoinRealm(EventInfo<RealmsMainScreen> e, long arg1, RealmsServer server) | ||
114 | - { | ||
115 | - PacketEventsClient.joiningRealm = server; | ||
116 | - } | ||
117 | - | ||
118 | - @Override | ||
119 | - protected IThreadListener getPacketContextListener(Packets.Context context) | ||
120 | - { | ||
121 | - if (context == Packets.Context.SERVER) | ||
122 | - { | ||
123 | - return MinecraftServer.getServer(); | ||
124 | - } | ||
125 | - | ||
126 | - return Minecraft.getMinecraft(); | ||
127 | - } | ||
128 | - | ||
129 | - /* (non-Javadoc) | ||
130 | - * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.play.server.S01PacketJoinGame) | ||
131 | - */ | ||
132 | - @Override | ||
133 | - protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) | ||
134 | - { | ||
135 | - if (this.preJoinGame(e, netHandler, packet)) | ||
136 | - { | ||
137 | - return; | ||
138 | - } | ||
139 | - | ||
140 | - ((INetHandlerPlayClient)netHandler).handleJoinGame(packet); | ||
141 | - super.handlePacket(e, netHandler, packet); | ||
142 | - | ||
143 | - this.postJoinGame(e, netHandler, packet); | ||
144 | - } | ||
145 | - | ||
146 | - /** | ||
147 | - * @param e | ||
148 | - * @param netHandler | ||
149 | - * @param packet | ||
150 | - * @throws EventCancellationException | ||
151 | - */ | ||
152 | - private boolean preJoinGame(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) throws EventCancellationException | ||
153 | - { | ||
154 | - if (!(netHandler instanceof INetHandlerPlayClient)) | ||
155 | - { | ||
156 | - return true; | ||
157 | - } | ||
158 | - | ||
159 | - e.cancel(); | ||
160 | - | ||
161 | - return !this.preJoinGameListeners.all().onPreJoinGame(netHandler, packet); | ||
162 | - } | ||
163 | - | ||
164 | - /** | ||
165 | - * @param e | ||
166 | - * @param netHandler | ||
167 | - * @param packet | ||
168 | - */ | ||
169 | - private void postJoinGame(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) | ||
170 | - { | ||
171 | - this.joinGameListeners.all().onJoinGame(netHandler, packet, Minecraft.getMinecraft().getCurrentServerData(), PacketEventsClient.joiningRealm); | ||
172 | - PacketEventsClient.joiningRealm = null; | ||
173 | - | ||
174 | - ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | ||
175 | - if (clientPluginChannels instanceof ClientPluginChannelsClient) | ||
176 | - { | ||
177 | - ((ClientPluginChannelsClient)clientPluginChannels).onJoinGame(netHandler, packet); | ||
178 | - } | ||
179 | - } | ||
180 | - | ||
181 | - /* (non-Javadoc) | ||
182 | - * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.login.server.S02PacketLoginSuccess) | ||
183 | - */ | ||
184 | - @Override | ||
185 | - protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketLoginSuccess packet) | ||
186 | - { | ||
187 | - if (netHandler instanceof INetHandlerLoginClient) | ||
188 | - { | ||
189 | - INetHandlerLoginClient netHandlerLoginClient = (INetHandlerLoginClient)netHandler; | ||
190 | - | ||
191 | - ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | ||
192 | - if (clientPluginChannels instanceof ClientPluginChannelsClient) | ||
193 | - { | ||
194 | - ((ClientPluginChannelsClient)clientPluginChannels).onPostLogin(netHandlerLoginClient, packet); | ||
195 | - } | ||
196 | - | ||
197 | - this.postLoginListeners.all().onPostLogin(netHandlerLoginClient, packet); | ||
198 | - } | ||
199 | - } | ||
200 | - | ||
201 | - /* (non-Javadoc) | ||
202 | - * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.play.server.S02PacketChat) | ||
203 | - */ | ||
204 | - @Override | ||
205 | - protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketChat packet) | ||
206 | - { | ||
207 | - if (packet.getChatComponent() == null) | ||
208 | - return; | ||
209 | - | ||
210 | - IChatComponent originalChat = packet.getChatComponent(); | ||
211 | - IChatComponent chat = originalChat; | ||
212 | - String message = chat.getFormattedText(); | ||
213 | - | ||
214 | - // Chat filters get a stab at the chat first, if any filter returns false the chat is discarded | ||
215 | - for (ChatFilter chatFilter : this.chatFilters) | ||
216 | - { | ||
217 | - ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(); | ||
218 | - | ||
219 | - if (chatFilter.onChat(chat, message, ret)) | ||
220 | - { | ||
221 | - if (ret.isSet()) | ||
222 | - { | ||
223 | - chat = ret.get(); | ||
224 | - if (chat == null) | ||
225 | - { | ||
226 | - chat = new ChatComponentText(""); | ||
227 | - } | ||
228 | - message = chat.getFormattedText(); | ||
229 | - } | ||
230 | - } | ||
231 | - else | ||
232 | - { | ||
233 | - e.cancel(); | ||
234 | - return; | ||
235 | - } | ||
236 | - } | ||
237 | - | ||
238 | - if (chat != originalChat) | ||
239 | - { | ||
240 | - try | ||
241 | - { | ||
242 | - chat = ChatUtilities.convertLegacyCodes(chat); | ||
243 | - PrivateFieldsClient.chatMessage.set(packet, chat); | ||
244 | - } | ||
245 | - catch (Exception ex) | ||
246 | - { | ||
247 | - ex.printStackTrace(); | ||
248 | - } | ||
249 | - } | ||
250 | - | ||
251 | - // Chat listeners get the chat if no filter removed it | ||
252 | - this.chatListeners.all().onChat(chat, message); | ||
253 | - } | 46 | + private static RealmsServer joiningRealm; |
47 | + | ||
48 | + private FastIterableDeque<JoinGameListener> joinGameListeners = new HandlerList<JoinGameListener>(JoinGameListener.class); | ||
49 | + private FastIterableDeque<ChatListener> chatListeners = new HandlerList<ChatListener>(ChatListener.class); | ||
50 | + private FastIterableDeque<ChatFilter> chatFilters = new HandlerList<ChatFilter>(ChatFilter.class, | ||
51 | + ReturnLogicOp.AND_BREAK_ON_FALSE); | ||
52 | + private FastIterableDeque<PreJoinGameListener> preJoinGameListeners = new HandlerList<PreJoinGameListener>(PreJoinGameListener.class, | ||
53 | + ReturnLogicOp.AND_BREAK_ON_FALSE); | ||
54 | + private FastIterableDeque<PostLoginListener> postLoginListeners = new HandlerList<PostLoginListener>(PostLoginListener.class); | ||
55 | + | ||
56 | + @Override | ||
57 | + public void registerInterfaces(InterfaceRegistrationDelegate delegate) | ||
58 | + { | ||
59 | + super.registerInterfaces(delegate); | ||
60 | + | ||
61 | + delegate.registerInterface(JoinGameListener.class); | ||
62 | + delegate.registerInterface(ChatListener.class); | ||
63 | + delegate.registerInterface(ChatFilter.class); | ||
64 | + delegate.registerInterface(PreJoinGameListener.class); | ||
65 | + delegate.registerInterface(PostLoginListener.class); | ||
66 | + } | ||
67 | + | ||
68 | + /** | ||
69 | + * @param joinGameListener | ||
70 | + */ | ||
71 | + public void registerJoinGameListener(JoinGameListener joinGameListener) | ||
72 | + { | ||
73 | + this.joinGameListeners.add(joinGameListener); | ||
74 | + } | ||
75 | + | ||
76 | + /** | ||
77 | + * @param chatFilter | ||
78 | + */ | ||
79 | + public void registerChatFilter(ChatFilter chatFilter) | ||
80 | + { | ||
81 | + this.chatFilters.add(chatFilter); | ||
82 | + } | ||
83 | + | ||
84 | + /** | ||
85 | + * @param chatListener | ||
86 | + */ | ||
87 | + public void registerChatListener(ChatListener chatListener) | ||
88 | + { | ||
89 | + if (chatListener instanceof ChatFilter) | ||
90 | + { | ||
91 | + LiteLoaderLogger.warning("Interface error initialising mod '%1s'. A mod implementing ChatFilter and ChatListener is not supported! " | ||
92 | + + "Remove one of these interfaces", chatListener.getName()); | ||
93 | + } | ||
94 | + else | ||
95 | + { | ||
96 | + this.chatListeners.add(chatListener); | ||
97 | + } | ||
98 | + } | ||
99 | + | ||
100 | + /** | ||
101 | + * @param joinGameListener | ||
102 | + */ | ||
103 | + public void registerPreJoinGameListener(PreJoinGameListener joinGameListener) | ||
104 | + { | ||
105 | + this.preJoinGameListeners.add(joinGameListener); | ||
106 | + } | ||
107 | + | ||
108 | + /** | ||
109 | + * @param postLoginListener | ||
110 | + */ | ||
111 | + public void registerPostLoginListener(PostLoginListener postLoginListener) | ||
112 | + { | ||
113 | + this.postLoginListeners.add(postLoginListener); | ||
114 | + } | ||
115 | + | ||
116 | + public static void onJoinRealm(EventInfo<RealmsMainScreen> e, long arg1, RealmsServer server) | ||
117 | + { | ||
118 | + PacketEventsClient.joiningRealm = server; | ||
119 | + } | ||
120 | + | ||
121 | + @Override | ||
122 | + protected IThreadListener getPacketContextListener(Packets.Context context) | ||
123 | + { | ||
124 | + if (context == Packets.Context.SERVER) | ||
125 | + { | ||
126 | + return MinecraftServer.getServer(); | ||
127 | + } | ||
128 | + | ||
129 | + return Minecraft.getMinecraft(); | ||
130 | + } | ||
131 | + | ||
132 | + /* (non-Javadoc) | ||
133 | + * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket( | ||
134 | + * com.mumfrey.liteloader.common.transformers.PacketEventInfo, | ||
135 | + * net.minecraft.network.INetHandler, | ||
136 | + * net.minecraft.network.play.server.S01PacketJoinGame) | ||
137 | + */ | ||
138 | + @Override | ||
139 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) | ||
140 | + { | ||
141 | + if (this.preJoinGame(e, netHandler, packet)) | ||
142 | + { | ||
143 | + return; | ||
144 | + } | ||
145 | + | ||
146 | + ((INetHandlerPlayClient)netHandler).handleJoinGame(packet); | ||
147 | + super.handlePacket(e, netHandler, packet); | ||
148 | + | ||
149 | + this.postJoinGame(e, netHandler, packet); | ||
150 | + } | ||
151 | + | ||
152 | + /** | ||
153 | + * @param e | ||
154 | + * @param netHandler | ||
155 | + * @param packet | ||
156 | + * @throws EventCancellationException | ||
157 | + */ | ||
158 | + private boolean preJoinGame(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) throws EventCancellationException | ||
159 | + { | ||
160 | + if (!(netHandler instanceof INetHandlerPlayClient)) | ||
161 | + { | ||
162 | + return true; | ||
163 | + } | ||
164 | + | ||
165 | + e.cancel(); | ||
166 | + | ||
167 | + return !this.preJoinGameListeners.all().onPreJoinGame(netHandler, packet); | ||
168 | + } | ||
169 | + | ||
170 | + /** | ||
171 | + * @param e | ||
172 | + * @param netHandler | ||
173 | + * @param packet | ||
174 | + */ | ||
175 | + private void postJoinGame(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) | ||
176 | + { | ||
177 | + this.joinGameListeners.all().onJoinGame(netHandler, packet, Minecraft.getMinecraft().getCurrentServerData(), PacketEventsClient.joiningRealm); | ||
178 | + PacketEventsClient.joiningRealm = null; | ||
179 | + | ||
180 | + ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | ||
181 | + if (clientPluginChannels instanceof ClientPluginChannelsClient) | ||
182 | + { | ||
183 | + ((ClientPluginChannelsClient)clientPluginChannels).onJoinGame(netHandler, packet); | ||
184 | + } | ||
185 | + } | ||
186 | + | ||
187 | + /* (non-Javadoc) | ||
188 | + * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket( | ||
189 | + * com.mumfrey.liteloader.common.transformers.PacketEventInfo, | ||
190 | + * net.minecraft.network.INetHandler, | ||
191 | + * net.minecraft.network.login.server.S02PacketLoginSuccess) | ||
192 | + */ | ||
193 | + @Override | ||
194 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketLoginSuccess packet) | ||
195 | + { | ||
196 | + if (netHandler instanceof INetHandlerLoginClient) | ||
197 | + { | ||
198 | + INetHandlerLoginClient netHandlerLoginClient = (INetHandlerLoginClient)netHandler; | ||
199 | + | ||
200 | + ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | ||
201 | + if (clientPluginChannels instanceof ClientPluginChannelsClient) | ||
202 | + { | ||
203 | + ((ClientPluginChannelsClient)clientPluginChannels).onPostLogin(netHandlerLoginClient, packet); | ||
204 | + } | ||
205 | + | ||
206 | + this.postLoginListeners.all().onPostLogin(netHandlerLoginClient, packet); | ||
207 | + } | ||
208 | + } | ||
209 | + | ||
210 | + /* (non-Javadoc) | ||
211 | + * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket( | ||
212 | + * com.mumfrey.liteloader.common.transformers.PacketEventInfo, | ||
213 | + * net.minecraft.network.INetHandler, | ||
214 | + * net.minecraft.network.play.server.S02PacketChat) | ||
215 | + */ | ||
216 | + @Override | ||
217 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketChat packet) | ||
218 | + { | ||
219 | + if (packet.getChatComponent() == null) | ||
220 | + { | ||
221 | + return; | ||
222 | + } | ||
223 | + | ||
224 | + IChatComponent originalChat = packet.getChatComponent(); | ||
225 | + IChatComponent chat = originalChat; | ||
226 | + String message = chat.getFormattedText(); | ||
227 | + | ||
228 | + // Chat filters get a stab at the chat first, if any filter returns false the chat is discarded | ||
229 | + for (ChatFilter chatFilter : this.chatFilters) | ||
230 | + { | ||
231 | + ReturnValue<IChatComponent> ret = new ReturnValue<IChatComponent>(); | ||
232 | + | ||
233 | + if (chatFilter.onChat(chat, message, ret)) | ||
234 | + { | ||
235 | + if (ret.isSet()) | ||
236 | + { | ||
237 | + chat = ret.get(); | ||
238 | + if (chat == null) | ||
239 | + { | ||
240 | + chat = new ChatComponentText(""); | ||
241 | + } | ||
242 | + message = chat.getFormattedText(); | ||
243 | + } | ||
244 | + } | ||
245 | + else | ||
246 | + { | ||
247 | + e.cancel(); | ||
248 | + return; | ||
249 | + } | ||
250 | + } | ||
251 | + | ||
252 | + if (chat != originalChat) | ||
253 | + { | ||
254 | + try | ||
255 | + { | ||
256 | + chat = ChatUtilities.convertLegacyCodes(chat); | ||
257 | + PrivateFieldsClient.chatMessage.set(packet, chat); | ||
258 | + } | ||
259 | + catch (Exception ex) | ||
260 | + { | ||
261 | + ex.printStackTrace(); | ||
262 | + } | ||
263 | + } | ||
264 | + | ||
265 | + // Chat listeners get the chat if no filter removed it | ||
266 | + this.chatListeners.all().onChat(chat, message); | ||
267 | + } | ||
254 | } | 268 | } |
src/client/java/com/mumfrey/liteloader/client/ResourceObserver.java
@@ -24,92 +24,94 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | @@ -24,92 +24,94 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | ||
24 | */ | 24 | */ |
25 | public class ResourceObserver implements ModLoadObserver | 25 | public class ResourceObserver implements ModLoadObserver |
26 | { | 26 | { |
27 | - private final Map<String, IResourcePack> resourcePacks = new HashMap<String, IResourcePack>(); | ||
28 | - | ||
29 | - public ResourceObserver() | ||
30 | - { | ||
31 | - } | ||
32 | - | ||
33 | - @Override | ||
34 | - public void onModLoaded(LiteMod mod) | ||
35 | - { | ||
36 | - } | ||
37 | - | ||
38 | - @SuppressWarnings("unchecked") | ||
39 | - @Override | ||
40 | - public void onPostModLoaded(ModInfo<LoadableMod<?>> handle) | ||
41 | - { | ||
42 | - if (!handle.hasContainer()) return; | ||
43 | - | ||
44 | - LoadableMod<?> container = handle.getContainer(); | ||
45 | - String modName = handle.getMod().getName(); | ||
46 | - | ||
47 | - if (modName == null) return; | ||
48 | - | ||
49 | - if (container.hasResources()) | ||
50 | - { | ||
51 | - LiteLoaderLogger.info("Adding \"%s\" to active resource pack set", container.getLocation()); | ||
52 | - IResourcePack resourcePack = this.initResourcePack(container, modName); | ||
53 | - Resources<IResourceManager, IResourcePack> resources = (Resources<IResourceManager, IResourcePack>)LiteLoader.getGameEngine().getResources(); | ||
54 | - if (resources.registerResourcePack(resourcePack)) | ||
55 | - { | ||
56 | - LiteLoaderLogger.info("Successfully added \"%s\" to active resource pack set", container.getLocation()); | ||
57 | - } | ||
58 | - } | ||
59 | - } | ||
60 | - | ||
61 | - public IResourcePack initResourcePack(LoadableMod<?> container, String name) | ||
62 | - { | ||
63 | - IResourcePack resourcePack = this.getResourcePack(container); | ||
64 | - | ||
65 | - if (resourcePack == null) | ||
66 | - { | ||
67 | - if (container.isDirectory()) | ||
68 | - { | ||
69 | - LiteLoaderLogger.info("Setting up \"%s/%s\" as mod resource pack with identifier \"%s\"", container.toFile().getParentFile().getName(), container.getName(), name); | ||
70 | - resourcePack = new ModResourcePackDir(name, container.toFile()); | ||
71 | - } | ||
72 | - else | ||
73 | - { | ||
74 | - LiteLoaderLogger.info("Setting up \"%s\" as mod resource pack with identifier \"%s\"", container.getName(), name); | ||
75 | - resourcePack = new ModResourcePack(name, container.toFile()); | ||
76 | - } | ||
77 | - | ||
78 | - this.setResourcePack(container, resourcePack); | ||
79 | - } | ||
80 | - | ||
81 | - return resourcePack; | ||
82 | - } | ||
83 | - | ||
84 | - private IResourcePack getResourcePack(LoadableMod<?> container) | ||
85 | - { | ||
86 | - String path = container.getLocation(); | ||
87 | - return this.resourcePacks.get(path); | ||
88 | - } | ||
89 | - | ||
90 | - private void setResourcePack(LoadableMod<?> container, IResourcePack resourcePack) | ||
91 | - { | ||
92 | - String path = container.getLocation(); | ||
93 | - this.resourcePacks.put(path, resourcePack); | ||
94 | - } | ||
95 | - | ||
96 | - @Override | ||
97 | - public void onModLoadFailed(LoadableMod<?> container, String identifier, String reason, Throwable th) | ||
98 | - { | ||
99 | - } | ||
100 | - | ||
101 | - @Override | ||
102 | - public void onPreInitMod(LiteMod mod) | ||
103 | - { | ||
104 | - } | ||
105 | - | ||
106 | - @Override | ||
107 | - public void onPostInitMod(LiteMod mod) | ||
108 | - { | ||
109 | - } | ||
110 | - | ||
111 | - @Override | ||
112 | - public void onMigrateModConfig(LiteMod mod, File newConfigPath, File oldConfigPath) | ||
113 | - { | ||
114 | - } | 27 | + private final Map<String, IResourcePack> resourcePacks = new HashMap<String, IResourcePack>(); |
28 | + | ||
29 | + public ResourceObserver() | ||
30 | + { | ||
31 | + } | ||
32 | + | ||
33 | + @Override | ||
34 | + public void onModLoaded(LiteMod mod) | ||
35 | + { | ||
36 | + } | ||
37 | + | ||
38 | + @SuppressWarnings("unchecked") | ||
39 | + @Override | ||
40 | + public void onPostModLoaded(ModInfo<LoadableMod<?>> handle) | ||
41 | + { | ||
42 | + if (!handle.hasContainer()) return; | ||
43 | + | ||
44 | + LoadableMod<?> container = handle.getContainer(); | ||
45 | + String modName = handle.getMod().getName(); | ||
46 | + | ||
47 | + if (modName == null) return; | ||
48 | + | ||
49 | + if (container.hasResources()) | ||
50 | + { | ||
51 | + LiteLoaderLogger.info("Adding \"%s\" to active resource pack set", container.getLocation()); | ||
52 | + IResourcePack resourcePack = this.initResourcePack(container, modName); | ||
53 | + Resources<IResourceManager, IResourcePack> resources | ||
54 | + = (Resources<IResourceManager, IResourcePack>)LiteLoader.getGameEngine().getResources(); | ||
55 | + if (resources.registerResourcePack(resourcePack)) | ||
56 | + { | ||
57 | + LiteLoaderLogger.info("Successfully added \"%s\" to active resource pack set", container.getLocation()); | ||
58 | + } | ||
59 | + } | ||
60 | + } | ||
61 | + | ||
62 | + public IResourcePack initResourcePack(LoadableMod<?> container, String name) | ||
63 | + { | ||
64 | + IResourcePack resourcePack = this.getResourcePack(container); | ||
65 | + | ||
66 | + if (resourcePack == null) | ||
67 | + { | ||
68 | + if (container.isDirectory()) | ||
69 | + { | ||
70 | + LiteLoaderLogger.info("Setting up \"%s/%s\" as mod resource pack with identifier \"%s\"", | ||
71 | + container.toFile().getParentFile().getName(), container.getName(), name); | ||
72 | + resourcePack = new ModResourcePackDir(name, container.toFile()); | ||
73 | + } | ||
74 | + else | ||
75 | + { | ||
76 | + LiteLoaderLogger.info("Setting up \"%s\" as mod resource pack with identifier \"%s\"", container.getName(), name); | ||
77 | + resourcePack = new ModResourcePack(name, container.toFile()); | ||
78 | + } | ||
79 | + | ||
80 | + this.setResourcePack(container, resourcePack); | ||
81 | + } | ||
82 | + | ||
83 | + return resourcePack; | ||
84 | + } | ||
85 | + | ||
86 | + private IResourcePack getResourcePack(LoadableMod<?> container) | ||
87 | + { | ||
88 | + String path = container.getLocation(); | ||
89 | + return this.resourcePacks.get(path); | ||
90 | + } | ||
91 | + | ||
92 | + private void setResourcePack(LoadableMod<?> container, IResourcePack resourcePack) | ||
93 | + { | ||
94 | + String path = container.getLocation(); | ||
95 | + this.resourcePacks.put(path, resourcePack); | ||
96 | + } | ||
97 | + | ||
98 | + @Override | ||
99 | + public void onModLoadFailed(LoadableMod<?> container, String identifier, String reason, Throwable th) | ||
100 | + { | ||
101 | + } | ||
102 | + | ||
103 | + @Override | ||
104 | + public void onPreInitMod(LiteMod mod) | ||
105 | + { | ||
106 | + } | ||
107 | + | ||
108 | + @Override | ||
109 | + public void onPostInitMod(LiteMod mod) | ||
110 | + { | ||
111 | + } | ||
112 | + | ||
113 | + @Override | ||
114 | + public void onMigrateModConfig(LiteMod mod, File newConfigPath, File oldConfigPath) | ||
115 | + { | ||
116 | + } | ||
115 | } | 117 | } |
src/client/java/com/mumfrey/liteloader/client/ResourcesClient.java
@@ -14,79 +14,82 @@ import com.mumfrey.liteloader.common.Resources; | @@ -14,79 +14,82 @@ import com.mumfrey.liteloader.common.Resources; | ||
14 | 14 | ||
15 | public class ResourcesClient implements Resources<IResourceManager, IResourcePack> | 15 | public class ResourcesClient implements Resources<IResourceManager, IResourcePack> |
16 | { | 16 | { |
17 | - private final Minecraft engine = Minecraft.getMinecraft(); | ||
18 | - | ||
19 | - /** | ||
20 | - * Registered resource packs | ||
21 | - */ | ||
22 | - private final Map<String, IResourcePack> registeredResourcePacks = new HashMap<String, IResourcePack>(); | 17 | + private final Minecraft engine = Minecraft.getMinecraft(); |
23 | 18 | ||
24 | - /** | ||
25 | - * True while initialising mods if we need to do a resource manager reload once the process is completed | ||
26 | - */ | ||
27 | - private boolean pendingResourceReload; | 19 | + /** |
20 | + * Registered resource packs | ||
21 | + */ | ||
22 | + private final Map<String, IResourcePack> registeredResourcePacks = new HashMap<String, IResourcePack>(); | ||
28 | 23 | ||
29 | - /* (non-Javadoc) | ||
30 | - * @see com.mumfrey.liteloader.common.GameEngine#refreshResources(boolean) | ||
31 | - */ | ||
32 | - @Override | ||
33 | - public void refreshResources(boolean force) | ||
34 | - { | ||
35 | - if (this.pendingResourceReload || force) | ||
36 | - { | ||
37 | - LoadingProgress.setMessage("Reloading Resources..."); | ||
38 | - this.pendingResourceReload = false; | ||
39 | - this.engine.refreshResources(); | ||
40 | - } | ||
41 | - } | 24 | + /** |
25 | + * True while initialising mods if we need to do a resource manager reload | ||
26 | + * once the process is completed. | ||
27 | + */ | ||
28 | + private boolean pendingResourceReload; | ||
42 | 29 | ||
43 | - /* (non-Javadoc) | ||
44 | - * @see com.mumfrey.liteloader.common.GameEngine#getResourceManager() | ||
45 | - */ | ||
46 | - @Override | ||
47 | - public IResourceManager getResourceManager() | ||
48 | - { | ||
49 | - return this.engine.getResourceManager(); | ||
50 | - } | ||
51 | - | ||
52 | - /* (non-Javadoc) | ||
53 | - * @see com.mumfrey.liteloader.common.GameEngine#registerResourcePack(net.minecraft.client.resources.IResourcePack) | ||
54 | - */ | ||
55 | - @Override | ||
56 | - public boolean registerResourcePack(IResourcePack resourcePack) | ||
57 | - { | ||
58 | - if (!this.registeredResourcePacks.containsKey(resourcePack.getPackName())) | ||
59 | - { | ||
60 | - this.pendingResourceReload = true; | 30 | + /* (non-Javadoc) |
31 | + * @see com.mumfrey.liteloader.common.GameEngine#refreshResources(boolean) | ||
32 | + */ | ||
33 | + @Override | ||
34 | + public void refreshResources(boolean force) | ||
35 | + { | ||
36 | + if (this.pendingResourceReload || force) | ||
37 | + { | ||
38 | + LoadingProgress.setMessage("Reloading Resources..."); | ||
39 | + this.pendingResourceReload = false; | ||
40 | + this.engine.refreshResources(); | ||
41 | + } | ||
42 | + } | ||
61 | 43 | ||
62 | - List<IResourcePack> defaultResourcePacks = ((IMinecraft)this.engine).getDefaultResourcePacks(); | ||
63 | - if (!defaultResourcePacks.contains(resourcePack)) | ||
64 | - { | ||
65 | - defaultResourcePacks.add(resourcePack); | ||
66 | - this.registeredResourcePacks.put(resourcePack.getPackName(), resourcePack); | ||
67 | - return true; | ||
68 | - } | ||
69 | - } | ||
70 | - | ||
71 | - return false; | ||
72 | - } | ||
73 | - | ||
74 | - /* (non-Javadoc) | ||
75 | - * @see com.mumfrey.liteloader.common.GameEngine#unRegisterResourcePack(net.minecraft.client.resources.IResourcePack) | ||
76 | - */ | ||
77 | - @Override | ||
78 | - public boolean unRegisterResourcePack(IResourcePack resourcePack) | ||
79 | - { | ||
80 | - if (this.registeredResourcePacks.containsValue(resourcePack)) | ||
81 | - { | ||
82 | - this.pendingResourceReload = true; | 44 | + /* (non-Javadoc) |
45 | + * @see com.mumfrey.liteloader.common.GameEngine#getResourceManager() | ||
46 | + */ | ||
47 | + @Override | ||
48 | + public IResourceManager getResourceManager() | ||
49 | + { | ||
50 | + return this.engine.getResourceManager(); | ||
51 | + } | ||
83 | 52 | ||
84 | - List<IResourcePack> defaultResourcePacks = ((IMinecraft)this.engine).getDefaultResourcePacks(); | ||
85 | - this.registeredResourcePacks.remove(resourcePack.getPackName()); | ||
86 | - defaultResourcePacks.remove(resourcePack); | ||
87 | - return true; | ||
88 | - } | ||
89 | - | ||
90 | - return false; | ||
91 | - } | 53 | + /* (non-Javadoc) |
54 | + * @see com.mumfrey.liteloader.common.GameEngine#registerResourcePack( | ||
55 | + * net.minecraft.client.resources.IResourcePack) | ||
56 | + */ | ||
57 | + @Override | ||
58 | + public boolean registerResourcePack(IResourcePack resourcePack) | ||
59 | + { | ||
60 | + if (!this.registeredResourcePacks.containsKey(resourcePack.getPackName())) | ||
61 | + { | ||
62 | + this.pendingResourceReload = true; | ||
63 | + | ||
64 | + List<IResourcePack> defaultResourcePacks = ((IMinecraft)this.engine).getDefaultResourcePacks(); | ||
65 | + if (!defaultResourcePacks.contains(resourcePack)) | ||
66 | + { | ||
67 | + defaultResourcePacks.add(resourcePack); | ||
68 | + this.registeredResourcePacks.put(resourcePack.getPackName(), resourcePack); | ||
69 | + return true; | ||
70 | + } | ||
71 | + } | ||
72 | + | ||
73 | + return false; | ||
74 | + } | ||
75 | + | ||
76 | + /* (non-Javadoc) | ||
77 | + * @see com.mumfrey.liteloader.common.GameEngine#unRegisterResourcePack( | ||
78 | + * net.minecraft.client.resources.IResourcePack) | ||
79 | + */ | ||
80 | + @Override | ||
81 | + public boolean unRegisterResourcePack(IResourcePack resourcePack) | ||
82 | + { | ||
83 | + if (this.registeredResourcePacks.containsValue(resourcePack)) | ||
84 | + { | ||
85 | + this.pendingResourceReload = true; | ||
86 | + | ||
87 | + List<IResourcePack> defaultResourcePacks = ((IMinecraft)this.engine).getDefaultResourcePacks(); | ||
88 | + this.registeredResourcePacks.remove(resourcePack.getPackName()); | ||
89 | + defaultResourcePacks.remove(resourcePack); | ||
90 | + return true; | ||
91 | + } | ||
92 | + | ||
93 | + return false; | ||
94 | + } | ||
92 | } | 95 | } |
src/client/java/com/mumfrey/liteloader/client/SoundHandlerReloadInhibitor.java
@@ -10,118 +10,120 @@ import com.mumfrey.liteloader.client.util.PrivateFieldsClient; | @@ -10,118 +10,120 @@ import com.mumfrey.liteloader.client.util.PrivateFieldsClient; | ||
10 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | 10 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
11 | 11 | ||
12 | /** | 12 | /** |
13 | - * Manager object which handles inhibiting the sound handler's reload notification at startup | 13 | + * Manager object which handles inhibiting the sound handler's reload |
14 | + * notification at startup. | ||
14 | * | 15 | * |
15 | * @author Adam Mummery-Smith | 16 | * @author Adam Mummery-Smith |
16 | */ | 17 | */ |
17 | public class SoundHandlerReloadInhibitor | 18 | public class SoundHandlerReloadInhibitor |
18 | { | 19 | { |
19 | - /** | ||
20 | - * Resource Manager | ||
21 | - */ | ||
22 | - private SimpleReloadableResourceManager resourceManager; | ||
23 | - | ||
24 | - /** | ||
25 | - * Sound manager | ||
26 | - */ | ||
27 | - private SoundHandler soundHandler; | ||
28 | - | ||
29 | - /** | ||
30 | - * True if inhibition is currently active | ||
31 | - */ | ||
32 | - private boolean inhibited; | ||
33 | - | ||
34 | - /** | ||
35 | - * So that we can re-insert the sound manager at the same index, we store the index we remove it from | ||
36 | - */ | ||
37 | - private int storedIndex; | ||
38 | - | ||
39 | - SoundHandlerReloadInhibitor(SimpleReloadableResourceManager resourceManager, SoundHandler soundHandler) | ||
40 | - { | ||
41 | - this.resourceManager = resourceManager; | ||
42 | - this.soundHandler = soundHandler; | ||
43 | - } | ||
44 | - | ||
45 | - /** | ||
46 | - * Inhibit the sound manager reload notification | ||
47 | - * | ||
48 | - * @return true if inhibit was applied | ||
49 | - */ | ||
50 | - public boolean inhibit() | ||
51 | - { | ||
52 | - try | ||
53 | - { | ||
54 | - if (!this.inhibited) | ||
55 | - { | ||
56 | - List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager); | ||
57 | - if (reloadListeners != null) | ||
58 | - { | ||
59 | - this.storedIndex = reloadListeners.indexOf(this.soundHandler); | ||
60 | - if (this.storedIndex > -1) | ||
61 | - { | ||
62 | - LiteLoaderLogger.info("Inhibiting sound handler reload"); | ||
63 | - reloadListeners.remove(this.soundHandler); | ||
64 | - this.inhibited = true; | ||
65 | - return true; | ||
66 | - } | ||
67 | - } | ||
68 | - } | ||
69 | - } | ||
70 | - catch (Exception ex) | ||
71 | - { | ||
72 | - LiteLoaderLogger.warning("Error inhibiting sound handler reload"); | ||
73 | - } | ||
74 | - | ||
75 | - return false; | ||
76 | - } | ||
77 | - | ||
78 | - /** | ||
79 | - * Remove the sound manager reload inhibit | ||
80 | - * | ||
81 | - * @param reload True to reload the sound manager now | ||
82 | - * @return true if the sound manager was successfully restored | ||
83 | - */ | ||
84 | - public boolean unInhibit(boolean reload) | ||
85 | - { | ||
86 | - try | ||
87 | - { | ||
88 | - if (this.inhibited) | ||
89 | - { | ||
90 | - List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager); | ||
91 | - if (reloadListeners != null) | ||
92 | - { | ||
93 | - if (this.storedIndex > -1) | ||
94 | - { | ||
95 | - reloadListeners.add(this.storedIndex, this.soundHandler); | ||
96 | - } | ||
97 | - else | ||
98 | - { | ||
99 | - reloadListeners.add(this.soundHandler); | ||
100 | - } | ||
101 | - | ||
102 | - LiteLoaderLogger.info("Sound handler reload inhibit removed"); | ||
103 | - | ||
104 | - if (reload) | ||
105 | - { | ||
106 | - LiteLoaderLogger.info("Reloading sound handler"); | ||
107 | - this.soundHandler.onResourceManagerReload(this.resourceManager); | ||
108 | - } | ||
109 | - | ||
110 | - this.inhibited = false; | ||
111 | - return true; | ||
112 | - } | ||
113 | - } | ||
114 | - } | ||
115 | - catch (Exception ex) | ||
116 | - { | ||
117 | - LiteLoaderLogger.warning("Error removing sound handler reload inhibit"); | ||
118 | - } | ||
119 | - | ||
120 | - return false; | ||
121 | - } | ||
122 | - | ||
123 | - public boolean isInhibited() | ||
124 | - { | ||
125 | - return this.inhibited; | ||
126 | - } | 20 | + /** |
21 | + * Resource Manager | ||
22 | + */ | ||
23 | + private SimpleReloadableResourceManager resourceManager; | ||
24 | + | ||
25 | + /** | ||
26 | + * Sound manager | ||
27 | + */ | ||
28 | + private SoundHandler soundHandler; | ||
29 | + | ||
30 | + /** | ||
31 | + * True if inhibition is currently active | ||
32 | + */ | ||
33 | + private boolean inhibited; | ||
34 | + | ||
35 | + /** | ||
36 | + * So that we can re-insert the sound manager at the same index, we store | ||
37 | + * the index we remove it from. | ||
38 | + */ | ||
39 | + private int storedIndex; | ||
40 | + | ||
41 | + SoundHandlerReloadInhibitor(SimpleReloadableResourceManager resourceManager, SoundHandler soundHandler) | ||
42 | + { | ||
43 | + this.resourceManager = resourceManager; | ||
44 | + this.soundHandler = soundHandler; | ||
45 | + } | ||
46 | + | ||
47 | + /** | ||
48 | + * Inhibit the sound manager reload notification | ||
49 | + * | ||
50 | + * @return true if inhibit was applied | ||
51 | + */ | ||
52 | + public boolean inhibit() | ||
53 | + { | ||
54 | + try | ||
55 | + { | ||
56 | + if (!this.inhibited) | ||
57 | + { | ||
58 | + List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager); | ||
59 | + if (reloadListeners != null) | ||
60 | + { | ||
61 | + this.storedIndex = reloadListeners.indexOf(this.soundHandler); | ||
62 | + if (this.storedIndex > -1) | ||
63 | + { | ||
64 | + LiteLoaderLogger.info("Inhibiting sound handler reload"); | ||
65 | + reloadListeners.remove(this.soundHandler); | ||
66 | + this.inhibited = true; | ||
67 | + return true; | ||
68 | + } | ||
69 | + } | ||
70 | + } | ||
71 | + } | ||
72 | + catch (Exception ex) | ||
73 | + { | ||
74 | + LiteLoaderLogger.warning("Error inhibiting sound handler reload"); | ||
75 | + } | ||
76 | + | ||
77 | + return false; | ||
78 | + } | ||
79 | + | ||
80 | + /** | ||
81 | + * Remove the sound manager reload inhibit | ||
82 | + * | ||
83 | + * @param reload True to reload the sound manager now | ||
84 | + * @return true if the sound manager was successfully restored | ||
85 | + */ | ||
86 | + public boolean unInhibit(boolean reload) | ||
87 | + { | ||
88 | + try | ||
89 | + { | ||
90 | + if (this.inhibited) | ||
91 | + { | ||
92 | + List<IResourceManagerReloadListener> reloadListeners = PrivateFieldsClient.reloadListeners.get(this.resourceManager); | ||
93 | + if (reloadListeners != null) | ||
94 | + { | ||
95 | + if (this.storedIndex > -1) | ||
96 | + { | ||
97 | + reloadListeners.add(this.storedIndex, this.soundHandler); | ||
98 | + } | ||
99 | + else | ||
100 | + { | ||
101 | + reloadListeners.add(this.soundHandler); | ||
102 | + } | ||
103 | + | ||
104 | + LiteLoaderLogger.info("Sound handler reload inhibit removed"); | ||
105 | + | ||
106 | + if (reload) | ||
107 | + { | ||
108 | + LiteLoaderLogger.info("Reloading sound handler"); | ||
109 | + this.soundHandler.onResourceManagerReload(this.resourceManager); | ||
110 | + } | ||
111 | + | ||
112 | + this.inhibited = false; | ||
113 | + return true; | ||
114 | + } | ||
115 | + } | ||
116 | + } | ||
117 | + catch (Exception ex) | ||
118 | + { | ||
119 | + LiteLoaderLogger.warning("Error removing sound handler reload inhibit"); | ||
120 | + } | ||
121 | + | ||
122 | + return false; | ||
123 | + } | ||
124 | + | ||
125 | + public boolean isInhibited() | ||
126 | + { | ||
127 | + return this.inhibited; | ||
128 | + } | ||
127 | } | 129 | } |
src/client/java/com/mumfrey/liteloader/client/Translator.java
@@ -6,23 +6,25 @@ import com.mumfrey.liteloader.api.TranslationProvider; | @@ -6,23 +6,25 @@ import com.mumfrey.liteloader.api.TranslationProvider; | ||
6 | 6 | ||
7 | public class Translator implements TranslationProvider | 7 | public class Translator implements TranslationProvider |
8 | { | 8 | { |
9 | - /* (non-Javadoc) | ||
10 | - * @see com.mumfrey.liteloader.api.TranslationProvider#translate(java.lang.String, java.lang.Object[]) | ||
11 | - */ | ||
12 | - @Override | ||
13 | - public String translate(String key, Object... args) | ||
14 | - { | ||
15 | - // TODO doesn't currently honour the contract of TranslationProvider::translate, should return null if translation is missing | ||
16 | - return I18n.format(key, args); | ||
17 | - } | ||
18 | - | ||
19 | - /* (non-Javadoc) | ||
20 | - * @see com.mumfrey.liteloader.api.TranslationProvider#translate(java.lang.String, java.lang.String, java.lang.Object[]) | ||
21 | - */ | ||
22 | - @Override | ||
23 | - public String translate(String locale, String key, Object... args) | ||
24 | - { | ||
25 | - // TODO doesn't currently honour the contract of TranslationProvider::translate, should return null if translation is missing | ||
26 | - return I18n.format(key, args); | ||
27 | - } | 9 | + /* (non-Javadoc) |
10 | + * @see com.mumfrey.liteloader.api.TranslationProvider#translate( | ||
11 | + * java.lang.String, java.lang.Object[]) | ||
12 | + */ | ||
13 | + @Override | ||
14 | + public String translate(String key, Object... args) | ||
15 | + { | ||
16 | + // TODO doesn't currently honour the contract of TranslationProvider::translate, should return null if translation is missing | ||
17 | + return I18n.format(key, args); | ||
18 | + } | ||
19 | + | ||
20 | + /* (non-Javadoc) | ||
21 | + * @see com.mumfrey.liteloader.api.TranslationProvider#translate( | ||
22 | + * java.lang.String, java.lang.String, java.lang.Object[]) | ||
23 | + */ | ||
24 | + @Override | ||
25 | + public String translate(String locale, String key, Object... args) | ||
26 | + { | ||
27 | + // TODO doesn't currently honour the contract of TranslationProvider::translate, should return null if translation is missing | ||
28 | + return I18n.format(key, args); | ||
29 | + } | ||
28 | } | 30 | } |
src/client/java/com/mumfrey/liteloader/client/api/LiteLoaderBrandingProvider.java
@@ -17,120 +17,125 @@ import com.mumfrey.liteloader.util.render.Icon; | @@ -17,120 +17,125 @@ import com.mumfrey.liteloader.util.render.Icon; | ||
17 | */ | 17 | */ |
18 | public class LiteLoaderBrandingProvider implements BrandingProvider | 18 | public class LiteLoaderBrandingProvider implements BrandingProvider |
19 | { | 19 | { |
20 | - public static final int BRANDING_COLOUR = 0xFF4785D1; | ||
21 | - | ||
22 | - public static final ResourceLocation ABOUT_TEXTURE = new ResourceLocation("liteloader", "textures/gui/about.png"); | ||
23 | - public static final IconAbsolute LOGO_COORDS = new IconAbsolute(LiteLoaderBrandingProvider.ABOUT_TEXTURE, "logo", 128, 40, 0, 0, 256, 80); | ||
24 | - public static final IconAbsolute ICON_COORDS = new IconAbsolute(LiteLoaderBrandingProvider.ABOUT_TEXTURE, "chicken", 32, 45, 0, 80, 64, 170); | ||
25 | - public static final IconAbsolute TWITTER_AVATAR_COORDS = new IconAbsolute(LiteLoaderBrandingProvider.ABOUT_TEXTURE, "twitter_avatar", 32, 32, 192, 80, 256, 144); | ||
26 | - | ||
27 | - public static final URI LITELOADER_URI = URI.create("http://www.liteloader.com/"); | ||
28 | - | ||
29 | - /* (non-Javadoc) | ||
30 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getPriority() | ||
31 | - */ | ||
32 | - @Override | ||
33 | - public int getPriority() | ||
34 | - { | ||
35 | - return -1000; | ||
36 | - } | ||
37 | - | ||
38 | - /* (non-Javadoc) | ||
39 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getDisplayName() | ||
40 | - */ | ||
41 | - @Override | ||
42 | - public String getDisplayName() | ||
43 | - { | ||
44 | - return "LiteLoader " + I18n.format("gui.about.versiontext", LiteLoader.getVersion()); | ||
45 | - } | ||
46 | - | ||
47 | - /* (non-Javadoc) | ||
48 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getCopyrightText() | ||
49 | - */ | ||
50 | - @Override | ||
51 | - public String getCopyrightText() | ||
52 | - { | ||
53 | - return "Copyright (c) 2012-2014 Adam Mummery-Smith"; | ||
54 | - } | ||
55 | - | ||
56 | - /* (non-Javadoc) | ||
57 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getHomepage() | ||
58 | - */ | ||
59 | - @Override | ||
60 | - public URI getHomepage() | ||
61 | - { | ||
62 | - return LiteLoaderBrandingProvider.LITELOADER_URI; | ||
63 | - } | ||
64 | - | ||
65 | - /* (non-Javadoc) | ||
66 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getBrandingColour() | ||
67 | - */ | ||
68 | - @Override | ||
69 | - public int getBrandingColour() | ||
70 | - { | ||
71 | - return LiteLoaderBrandingProvider.BRANDING_COLOUR; | ||
72 | - } | ||
73 | - | ||
74 | - /* (non-Javadoc) | ||
75 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getLogoResource() | ||
76 | - */ | ||
77 | - @Override | ||
78 | - public ResourceLocation getLogoResource() | ||
79 | - { | ||
80 | - return LiteLoaderBrandingProvider.ABOUT_TEXTURE; | ||
81 | - } | ||
82 | - | ||
83 | - /* (non-Javadoc) | ||
84 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getLogoCoords() | ||
85 | - */ | ||
86 | - @Override | ||
87 | - public Icon getLogoCoords() | ||
88 | - { | ||
89 | - return LiteLoaderBrandingProvider.LOGO_COORDS; | ||
90 | - } | ||
91 | - | ||
92 | - /* (non-Javadoc) | ||
93 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getIconResource() | ||
94 | - */ | ||
95 | - @Override | ||
96 | - public ResourceLocation getIconResource() | ||
97 | - { | ||
98 | - return LiteLoaderBrandingProvider.ABOUT_TEXTURE; | ||
99 | - } | ||
100 | - | ||
101 | - /* (non-Javadoc) | ||
102 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getIconCoords() | ||
103 | - */ | ||
104 | - @Override | ||
105 | - public Icon getIconCoords() | ||
106 | - { | ||
107 | - return LiteLoaderBrandingProvider.ICON_COORDS; | ||
108 | - } | ||
109 | - | ||
110 | - /* (non-Javadoc) | ||
111 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterUserName() | ||
112 | - */ | ||
113 | - @Override | ||
114 | - public String getTwitterUserName() | ||
115 | - { | ||
116 | - return "therealeq2"; | ||
117 | - } | ||
118 | - | ||
119 | - /* (non-Javadoc) | ||
120 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterAvatarResource() | ||
121 | - */ | ||
122 | - @Override | ||
123 | - public ResourceLocation getTwitterAvatarResource() | ||
124 | - { | ||
125 | - return LiteLoaderBrandingProvider.ABOUT_TEXTURE; | ||
126 | - } | ||
127 | - | ||
128 | - /* (non-Javadoc) | ||
129 | - * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterAvatarCoords() | ||
130 | - */ | ||
131 | - @Override | ||
132 | - public Icon getTwitterAvatarCoords() | ||
133 | - { | ||
134 | - return LiteLoaderBrandingProvider.TWITTER_AVATAR_COORDS; | ||
135 | - } | 20 | + public static final int BRANDING_COLOUR = 0xFF4785D1; |
21 | + | ||
22 | + public static final ResourceLocation ABOUT_TEXTURE = new ResourceLocation("liteloader", "textures/gui/about.png"); | ||
23 | + | ||
24 | + public static final IconAbsolute LOGO_COORDS = new IconAbsolute(LiteLoaderBrandingProvider.ABOUT_TEXTURE, | ||
25 | + "logo", 128, 40, 0, 0, 256, 80); | ||
26 | + public static final IconAbsolute ICON_COORDS = new IconAbsolute(LiteLoaderBrandingProvider.ABOUT_TEXTURE, | ||
27 | + "chicken", 32, 45, 0, 80, 64, 170); | ||
28 | + public static final IconAbsolute TWITTER_AVATAR_COORDS = new IconAbsolute(LiteLoaderBrandingProvider.ABOUT_TEXTURE, | ||
29 | + "twitter_avatar",32, 32, 192, 80, 256, 144); | ||
30 | + | ||
31 | + public static final URI LITELOADER_URI = URI.create("http://www.liteloader.com/"); | ||
32 | + | ||
33 | + /* (non-Javadoc) | ||
34 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getPriority() | ||
35 | + */ | ||
36 | + @Override | ||
37 | + public int getPriority() | ||
38 | + { | ||
39 | + return -1000; | ||
40 | + } | ||
41 | + | ||
42 | + /* (non-Javadoc) | ||
43 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getDisplayName() | ||
44 | + */ | ||
45 | + @Override | ||
46 | + public String getDisplayName() | ||
47 | + { | ||
48 | + return "LiteLoader " + I18n.format("gui.about.versiontext", LiteLoader.getVersion()); | ||
49 | + } | ||
50 | + | ||
51 | + /* (non-Javadoc) | ||
52 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getCopyrightText() | ||
53 | + */ | ||
54 | + @Override | ||
55 | + public String getCopyrightText() | ||
56 | + { | ||
57 | + return "Copyright (c) 2012-2014 Adam Mummery-Smith"; | ||
58 | + } | ||
59 | + | ||
60 | + /* (non-Javadoc) | ||
61 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getHomepage() | ||
62 | + */ | ||
63 | + @Override | ||
64 | + public URI getHomepage() | ||
65 | + { | ||
66 | + return LiteLoaderBrandingProvider.LITELOADER_URI; | ||
67 | + } | ||
68 | + | ||
69 | + /* (non-Javadoc) | ||
70 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getBrandingColour() | ||
71 | + */ | ||
72 | + @Override | ||
73 | + public int getBrandingColour() | ||
74 | + { | ||
75 | + return LiteLoaderBrandingProvider.BRANDING_COLOUR; | ||
76 | + } | ||
77 | + | ||
78 | + /* (non-Javadoc) | ||
79 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getLogoResource() | ||
80 | + */ | ||
81 | + @Override | ||
82 | + public ResourceLocation getLogoResource() | ||
83 | + { | ||
84 | + return LiteLoaderBrandingProvider.ABOUT_TEXTURE; | ||
85 | + } | ||
86 | + | ||
87 | + /* (non-Javadoc) | ||
88 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getLogoCoords() | ||
89 | + */ | ||
90 | + @Override | ||
91 | + public Icon getLogoCoords() | ||
92 | + { | ||
93 | + return LiteLoaderBrandingProvider.LOGO_COORDS; | ||
94 | + } | ||
95 | + | ||
96 | + /* (non-Javadoc) | ||
97 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getIconResource() | ||
98 | + */ | ||
99 | + @Override | ||
100 | + public ResourceLocation getIconResource() | ||
101 | + { | ||
102 | + return LiteLoaderBrandingProvider.ABOUT_TEXTURE; | ||
103 | + } | ||
104 | + | ||
105 | + /* (non-Javadoc) | ||
106 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getIconCoords() | ||
107 | + */ | ||
108 | + @Override | ||
109 | + public Icon getIconCoords() | ||
110 | + { | ||
111 | + return LiteLoaderBrandingProvider.ICON_COORDS; | ||
112 | + } | ||
113 | + | ||
114 | + /* (non-Javadoc) | ||
115 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterUserName() | ||
116 | + */ | ||
117 | + @Override | ||
118 | + public String getTwitterUserName() | ||
119 | + { | ||
120 | + return "therealeq2"; | ||
121 | + } | ||
122 | + | ||
123 | + /* (non-Javadoc) | ||
124 | + * @see com.mumfrey.liteloader.api.BrandingProvider | ||
125 | + * #getTwitterAvatarResource() | ||
126 | + */ | ||
127 | + @Override | ||
128 | + public ResourceLocation getTwitterAvatarResource() | ||
129 | + { | ||
130 | + return LiteLoaderBrandingProvider.ABOUT_TEXTURE; | ||
131 | + } | ||
132 | + | ||
133 | + /* (non-Javadoc) | ||
134 | + * @see com.mumfrey.liteloader.api.BrandingProvider#getTwitterAvatarCoords() | ||
135 | + */ | ||
136 | + @Override | ||
137 | + public Icon getTwitterAvatarCoords() | ||
138 | + { | ||
139 | + return LiteLoaderBrandingProvider.TWITTER_AVATAR_COORDS; | ||
140 | + } | ||
136 | } | 141 | } |
src/client/java/com/mumfrey/liteloader/client/api/LiteLoaderCoreAPIClient.java
@@ -26,126 +26,127 @@ import com.mumfrey.liteloader.transformers.event.json.ModEvents; | @@ -26,126 +26,127 @@ import com.mumfrey.liteloader.transformers.event.json.ModEvents; | ||
26 | */ | 26 | */ |
27 | public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI | 27 | public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI |
28 | { | 28 | { |
29 | - private static final String PKG_LITELOADER_CLIENT = LiteLoaderCoreAPI.PKG_LITELOADER + ".client"; | ||
30 | - | ||
31 | - private static final String[] requiredTransformers = { | ||
32 | - LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.EventProxyTransformer", | ||
33 | - LiteLoaderCoreAPI.PKG_LITELOADER + ".launch.LiteLoaderTransformer", | ||
34 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.CrashReportTransformer" | ||
35 | - }; | ||
36 | - | ||
37 | - private static final String[] requiredDownstreamTransformers = { | ||
38 | - LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer", | ||
39 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer", | ||
40 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftTransformer", | ||
41 | - LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.json.ModEventInjectionTransformer" | ||
42 | - }; | ||
43 | - | ||
44 | - private ObjectFactory<Minecraft, IntegratedServer> objectFactory; | ||
45 | - | ||
46 | - /* (non-Javadoc) | ||
47 | - * @see com.mumfrey.liteloader.api.LiteAPI#getRequiredTransformers() | ||
48 | - */ | ||
49 | - @Override | ||
50 | - public String[] getRequiredTransformers() | ||
51 | - { | ||
52 | - return LiteLoaderCoreAPIClient.requiredTransformers; | ||
53 | - } | ||
54 | - | ||
55 | - /* (non-Javadoc) | ||
56 | - * @see com.mumfrey.liteloader.api.LiteAPI#getRequiredDownstreamTransformers() | ||
57 | - */ | ||
58 | - @Override | ||
59 | - public String[] getRequiredDownstreamTransformers() | ||
60 | - { | ||
61 | - return LiteLoaderCoreAPIClient.requiredDownstreamTransformers; | ||
62 | - } | ||
63 | - | ||
64 | - /* (non-Javadoc) | ||
65 | - * @see com.mumfrey.liteloader.api.LiteAPI#getCustomisationProviders() | ||
66 | - */ | ||
67 | - @Override | ||
68 | - public List<CustomisationProvider> getCustomisationProviders() | ||
69 | - { | ||
70 | - return ImmutableList.<CustomisationProvider>of | ||
71 | - ( | ||
72 | - new LiteLoaderBrandingProvider(), | ||
73 | - new LiteLoaderModInfoDecorator(), | ||
74 | - new Translator() | ||
75 | - ); | ||
76 | - } | ||
77 | - | ||
78 | - /* (non-Javadoc) | ||
79 | - * @see com.mumfrey.liteloader.api.LiteAPI#getCoreProviders() | ||
80 | - */ | ||
81 | - @Override | ||
82 | - public List<CoreProvider> getCoreProviders() | ||
83 | - { | ||
84 | - return ImmutableList.<CoreProvider>of | ||
85 | - ( | ||
86 | - new LiteLoaderCoreProviderClient(this.properties), | ||
87 | - LiteLoader.getInput() | ||
88 | - ); | ||
89 | - } | ||
90 | - | ||
91 | - | ||
92 | - /* (non-Javadoc) | ||
93 | - * @see com.mumfrey.liteloader.api.LiteAPI#getInterfaceProviders() | ||
94 | - */ | ||
95 | - @Override | ||
96 | - public List<InterfaceProvider> getInterfaceProviders() | ||
97 | - { | ||
98 | - ObjectFactory<?, ?> objectFactory = this.getObjectFactory(); | ||
99 | - | ||
100 | - return ImmutableList.<InterfaceProvider>of | ||
101 | - ( | ||
102 | - objectFactory.getEventBroker(), | ||
103 | - objectFactory.getPacketEventBroker(), | ||
104 | - objectFactory.getClientPluginChannels(), | ||
105 | - objectFactory.getServerPluginChannels(), | ||
106 | - MessageBus.getInstance() | ||
107 | - ); | ||
108 | - } | ||
109 | - | ||
110 | - /* (non-Javadoc) | ||
111 | - * @see com.mumfrey.liteloader.api.LiteAPI#getPreInitObservers() | ||
112 | - */ | ||
113 | - @Override | ||
114 | - public List<Observer> getPreInitObservers() | ||
115 | - { | ||
116 | - return ImmutableList.<Observer>of | ||
117 | - ( | ||
118 | - new ModEvents() | ||
119 | - ); | ||
120 | - } | ||
121 | - | ||
122 | - /* (non-Javadoc) | ||
123 | - * @see com.mumfrey.liteloader.api.LiteAPI#getObservers() | ||
124 | - */ | ||
125 | - @Override | ||
126 | - public List<Observer> getObservers() | ||
127 | - { | ||
128 | - ObjectFactory<?, ?> objectFactory = this.getObjectFactory(); | ||
129 | - | ||
130 | - return ImmutableList.<Observer>of | ||
131 | - ( | ||
132 | - new ResourceObserver(), | ||
133 | - objectFactory.getPanelManager(), | ||
134 | - objectFactory.getEventBroker() | ||
135 | - ); | ||
136 | - } | ||
137 | - | ||
138 | - /* (non-Javadoc) | ||
139 | - * @see com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI#getObjectFactory() | ||
140 | - */ | ||
141 | - @Override | ||
142 | - public ObjectFactory<?, ?> getObjectFactory() | ||
143 | - { | ||
144 | - if (this.objectFactory == null) | ||
145 | - { | ||
146 | - this.objectFactory = new ObjectFactoryClient(this.environment, this.properties); | ||
147 | - } | ||
148 | - | ||
149 | - return this.objectFactory; | ||
150 | - } | 29 | + private static final String PKG_LITELOADER_CLIENT = LiteLoaderCoreAPI.PKG_LITELOADER + ".client"; |
30 | + | ||
31 | + private static final String[] requiredTransformers = { | ||
32 | + LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.EventProxyTransformer", | ||
33 | + LiteLoaderCoreAPI.PKG_LITELOADER + ".launch.LiteLoaderTransformer", | ||
34 | + LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.CrashReportTransformer" | ||
35 | + }; | ||
36 | + | ||
37 | + private static final String[] requiredDownstreamTransformers = { | ||
38 | + LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer", | ||
39 | + LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer", | ||
40 | + LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftTransformer", | ||
41 | + LiteLoaderCoreAPI.PKG_LITELOADER + ".transformers.event.json.ModEventInjectionTransformer" | ||
42 | + }; | ||
43 | + | ||
44 | + private ObjectFactory<Minecraft, IntegratedServer> objectFactory; | ||
45 | + | ||
46 | + /* (non-Javadoc) | ||
47 | + * @see com.mumfrey.liteloader.api.LiteAPI#getRequiredTransformers() | ||
48 | + */ | ||
49 | + @Override | ||
50 | + public String[] getRequiredTransformers() | ||
51 | + { | ||
52 | + return LiteLoaderCoreAPIClient.requiredTransformers; | ||
53 | + } | ||
54 | + | ||
55 | + /* (non-Javadoc) | ||
56 | + * @see com.mumfrey.liteloader.api.LiteAPI | ||
57 | + * #getRequiredDownstreamTransformers() | ||
58 | + */ | ||
59 | + @Override | ||
60 | + public String[] getRequiredDownstreamTransformers() | ||
61 | + { | ||
62 | + return LiteLoaderCoreAPIClient.requiredDownstreamTransformers; | ||
63 | + } | ||
64 | + | ||
65 | + /* (non-Javadoc) | ||
66 | + * @see com.mumfrey.liteloader.api.LiteAPI#getCustomisationProviders() | ||
67 | + */ | ||
68 | + @Override | ||
69 | + public List<CustomisationProvider> getCustomisationProviders() | ||
70 | + { | ||
71 | + return ImmutableList.<CustomisationProvider>of | ||
72 | + ( | ||
73 | + new LiteLoaderBrandingProvider(), | ||
74 | + new LiteLoaderModInfoDecorator(), | ||
75 | + new Translator() | ||
76 | + ); | ||
77 | + } | ||
78 | + | ||
79 | + /* (non-Javadoc) | ||
80 | + * @see com.mumfrey.liteloader.api.LiteAPI#getCoreProviders() | ||
81 | + */ | ||
82 | + @Override | ||
83 | + public List<CoreProvider> getCoreProviders() | ||
84 | + { | ||
85 | + return ImmutableList.<CoreProvider>of | ||
86 | + ( | ||
87 | + new LiteLoaderCoreProviderClient(this.properties), | ||
88 | + LiteLoader.getInput() | ||
89 | + ); | ||
90 | + } | ||
91 | + | ||
92 | + | ||
93 | + /* (non-Javadoc) | ||
94 | + * @see com.mumfrey.liteloader.api.LiteAPI#getInterfaceProviders() | ||
95 | + */ | ||
96 | + @Override | ||
97 | + public List<InterfaceProvider> getInterfaceProviders() | ||
98 | + { | ||
99 | + ObjectFactory<?, ?> objectFactory = this.getObjectFactory(); | ||
100 | + | ||
101 | + return ImmutableList.<InterfaceProvider>of | ||
102 | + ( | ||
103 | + objectFactory.getEventBroker(), | ||
104 | + objectFactory.getPacketEventBroker(), | ||
105 | + objectFactory.getClientPluginChannels(), | ||
106 | + objectFactory.getServerPluginChannels(), | ||
107 | + MessageBus.getInstance() | ||
108 | + ); | ||
109 | + } | ||
110 | + | ||
111 | + /* (non-Javadoc) | ||
112 | + * @see com.mumfrey.liteloader.api.LiteAPI#getPreInitObservers() | ||
113 | + */ | ||
114 | + @Override | ||
115 | + public List<Observer> getPreInitObservers() | ||
116 | + { | ||
117 | + return ImmutableList.<Observer>of | ||
118 | + ( | ||
119 | + new ModEvents() | ||
120 | + ); | ||
121 | + } | ||
122 | + | ||
123 | + /* (non-Javadoc) | ||
124 | + * @see com.mumfrey.liteloader.api.LiteAPI#getObservers() | ||
125 | + */ | ||
126 | + @Override | ||
127 | + public List<Observer> getObservers() | ||
128 | + { | ||
129 | + ObjectFactory<?, ?> objectFactory = this.getObjectFactory(); | ||
130 | + | ||
131 | + return ImmutableList.<Observer>of | ||
132 | + ( | ||
133 | + new ResourceObserver(), | ||
134 | + objectFactory.getPanelManager(), | ||
135 | + objectFactory.getEventBroker() | ||
136 | + ); | ||
137 | + } | ||
138 | + | ||
139 | + /* (non-Javadoc) | ||
140 | + * @see com.mumfrey.liteloader.core.api.LiteLoaderCoreAPI#getObjectFactory() | ||
141 | + */ | ||
142 | + @Override | ||
143 | + public ObjectFactory<?, ?> getObjectFactory() | ||
144 | + { | ||
145 | + if (this.objectFactory == null) | ||
146 | + { | ||
147 | + this.objectFactory = new ObjectFactoryClient(this.environment, this.properties); | ||
148 | + } | ||
149 | + | ||
150 | + return this.objectFactory; | ||
151 | + } | ||
151 | } | 152 | } |