Commit 3a391e329e8007d4382bf141ddf660318e91e58b
1 parent
d7a488cd
Relocate client sources
Showing
27 changed files
with
2338 additions
and
2338 deletions
Too many changes to show.
To preserve performance only 27 of 72 files are displayed.
java/client/com/mumfrey/liteloader/ChatFilter.java renamed to src/client/java/com/mumfrey/liteloader/ChatFilter.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
4 | - | |
5 | -import net.minecraft.util.IChatComponent; | |
6 | - | |
7 | - | |
8 | -/** | |
9 | - * Interface for mods which can filter inbound chat | |
10 | - * | |
11 | - * @author Adam Mummery-Smith | |
12 | - */ | |
13 | -public interface ChatFilter extends LiteMod | |
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); | |
25 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
4 | + | |
5 | +import net.minecraft.util.IChatComponent; | |
6 | + | |
7 | + | |
8 | +/** | |
9 | + * Interface for mods which can filter inbound chat | |
10 | + * | |
11 | + * @author Adam Mummery-Smith | |
12 | + */ | |
13 | +public interface ChatFilter extends LiteMod | |
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); | |
25 | +} | ... | ... |
java/client/com/mumfrey/liteloader/ChatListener.java renamed to src/client/java/com/mumfrey/liteloader/ChatListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.util.IChatComponent; | |
4 | - | |
5 | - | |
6 | -/** | |
7 | - * Interface for mods which receive inbound chat | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public interface ChatListener extends LiteMod | |
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); | |
20 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.util.IChatComponent; | |
4 | + | |
5 | + | |
6 | +/** | |
7 | + * Interface for mods which receive inbound chat | |
8 | + * | |
9 | + * @author Adam Mummery-Smith | |
10 | + */ | |
11 | +public interface ChatListener extends LiteMod | |
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); | |
20 | +} | ... | ... |
java/client/com/mumfrey/liteloader/ChatRenderListener.java renamed to src/client/java/com/mumfrey/liteloader/ChatRenderListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.gui.GuiNewChat; | |
4 | - | |
5 | -/** | |
6 | - * Interface for mods which want to alter the chat display | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface ChatRenderListener extends LiteMod | |
11 | -{ | |
12 | - public abstract void onPreRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | |
13 | - | |
14 | - public abstract void onPostRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | |
15 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.gui.GuiNewChat; | |
4 | + | |
5 | +/** | |
6 | + * Interface for mods which want to alter the chat display | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface ChatRenderListener extends LiteMod | |
11 | +{ | |
12 | + public abstract void onPreRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | |
13 | + | |
14 | + public abstract void onPostRenderChat(int screenWidth, int screenHeight, GuiNewChat chat); | |
15 | +} | ... | ... |
java/client/com/mumfrey/liteloader/EntityRenderListener.java renamed to src/client/java/com/mumfrey/liteloader/EntityRenderListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.renderer.entity.Render; | |
4 | -import net.minecraft.entity.Entity; | |
5 | - | |
6 | -/** | |
7 | - * Interface for mods which want to receive callbacks when entities are rendered into the world | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public interface EntityRenderListener extends LiteMod | |
12 | -{ | |
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); | |
25 | - | |
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); | |
38 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.renderer.entity.Render; | |
4 | +import net.minecraft.entity.Entity; | |
5 | + | |
6 | +/** | |
7 | + * Interface for mods which want to receive callbacks when entities are rendered into the world | |
8 | + * | |
9 | + * @author Adam Mummery-Smith | |
10 | + */ | |
11 | +public interface EntityRenderListener extends LiteMod | |
12 | +{ | |
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); | |
25 | + | |
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); | |
38 | +} | ... | ... |
java/client/com/mumfrey/liteloader/FrameBufferListener.java renamed to src/client/java/com/mumfrey/liteloader/FrameBufferListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.shader.Framebuffer; | |
4 | - | |
5 | -/** | |
6 | - * Interface for mods which want to interact with Minecraft's main Frame Buffer Object | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface FrameBufferListener extends LiteMod | |
11 | -{ | |
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); | |
26 | - | |
27 | - /** | |
28 | - * Called after the FBO is rendered whilst still inside the FBO transform | |
29 | - */ | |
30 | - public abstract void postRenderFBO(Framebuffer fbo); | |
31 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.shader.Framebuffer; | |
4 | + | |
5 | +/** | |
6 | + * Interface for mods which want to interact with Minecraft's main Frame Buffer Object | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface FrameBufferListener extends LiteMod | |
11 | +{ | |
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); | |
26 | + | |
27 | + /** | |
28 | + * Called after the FBO is rendered whilst still inside the FBO transform | |
29 | + */ | |
30 | + public abstract void postRenderFBO(Framebuffer fbo); | |
31 | +} | ... | ... |
java/client/com/mumfrey/liteloader/GameLoopListener.java renamed to src/client/java/com/mumfrey/liteloader/GameLoopListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | - | |
5 | -/** | |
6 | - * Interface for mods which want a frame notification every single game loop | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface GameLoopListener extends LiteMod | |
11 | -{ | |
12 | - /** | |
13 | - * Called every frame, before the world is ticked | |
14 | - * | |
15 | - * @param minecraft | |
16 | - */ | |
17 | - public abstract void onRunGameLoop(Minecraft minecraft); | |
18 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | + | |
5 | +/** | |
6 | + * Interface for mods which want a frame notification every single game loop | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface GameLoopListener extends LiteMod | |
11 | +{ | |
12 | + /** | |
13 | + * Called every frame, before the world is ticked | |
14 | + * | |
15 | + * @param minecraft | |
16 | + */ | |
17 | + public abstract void onRunGameLoop(Minecraft minecraft); | |
18 | +} | ... | ... |
java/client/com/mumfrey/liteloader/HUDRenderListener.java renamed to src/client/java/com/mumfrey/liteloader/HUDRenderListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -/** | |
4 | - * Interface for mods which want callbacks when the HUD is rendered | |
5 | - * | |
6 | - * @author Adam Mummery-Smith | |
7 | - */ | |
8 | -public interface HUDRenderListener extends LiteMod | |
9 | -{ | |
10 | - public abstract void onPreRenderHUD(int screenWidth, int screenHeight); | |
11 | - | |
12 | - public abstract void onPostRenderHUD(int screenWidth, int screenHeight); | |
13 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +/** | |
4 | + * Interface for mods which want callbacks when the HUD is rendered | |
5 | + * | |
6 | + * @author Adam Mummery-Smith | |
7 | + */ | |
8 | +public interface HUDRenderListener extends LiteMod | |
9 | +{ | |
10 | + public abstract void onPreRenderHUD(int screenWidth, int screenHeight); | |
11 | + | |
12 | + public abstract void onPostRenderHUD(int screenWidth, int screenHeight); | |
13 | +} | ... | ... |
java/client/com/mumfrey/liteloader/InitCompleteListener.java renamed to src/client/java/com/mumfrey/liteloader/InitCompleteListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | - | |
5 | -import com.mumfrey.liteloader.core.LiteLoader; | |
6 | - | |
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. | |
10 | - * | |
11 | - * @author Adam Mummery-Smith | |
12 | - */ | |
13 | -public interface InitCompleteListener extends Tickable | |
14 | -{ | |
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); | |
22 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | + | |
5 | +import com.mumfrey.liteloader.core.LiteLoader; | |
6 | + | |
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. | |
10 | + * | |
11 | + * @author Adam Mummery-Smith | |
12 | + */ | |
13 | +public interface InitCompleteListener extends Tickable | |
14 | +{ | |
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); | |
22 | +} | ... | ... |
java/client/com/mumfrey/liteloader/JoinGameListener.java renamed to src/client/java/com/mumfrey/liteloader/JoinGameListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.multiplayer.ServerData; | |
4 | -import net.minecraft.network.INetHandler; | |
5 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
6 | - | |
7 | -import com.mojang.realmsclient.dto.RealmsServer; | |
8 | - | |
9 | - | |
10 | -/** | |
11 | - * Interface for mods which wish to be notified when the player connects to a server (or local game) | |
12 | - * | |
13 | - * @author Adam Mummery-Smith | |
14 | - */ | |
15 | -public interface JoinGameListener extends LiteMod | |
16 | -{ | |
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); | |
26 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.multiplayer.ServerData; | |
4 | +import net.minecraft.network.INetHandler; | |
5 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
6 | + | |
7 | +import com.mojang.realmsclient.dto.RealmsServer; | |
8 | + | |
9 | + | |
10 | +/** | |
11 | + * Interface for mods which wish to be notified when the player connects to a server (or local game) | |
12 | + * | |
13 | + * @author Adam Mummery-Smith | |
14 | + */ | |
15 | +public interface JoinGameListener extends LiteMod | |
16 | +{ | |
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); | |
26 | +} | ... | ... |
java/client/com/mumfrey/liteloader/OutboundChatFilter.java renamed to src/client/java/com/mumfrey/liteloader/OutboundChatFilter.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -/** | |
4 | - * Interface for mods which want to filter outbound chat | |
5 | - * | |
6 | - * @author Adam Mummery-Smith | |
7 | - */ | |
8 | -public interface OutboundChatFilter extends LiteMod | |
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); | |
16 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +/** | |
4 | + * Interface for mods which want to filter outbound chat | |
5 | + * | |
6 | + * @author Adam Mummery-Smith | |
7 | + */ | |
8 | +public interface OutboundChatFilter extends LiteMod | |
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); | |
16 | +} | ... | ... |
java/client/com/mumfrey/liteloader/OutboundChatListener.java renamed to src/client/java/com/mumfrey/liteloader/OutboundChatListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.network.play.client.C01PacketChatMessage; | |
4 | - | |
5 | -/** | |
6 | - * Interface for mods which want to monitor outbound chat | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface OutboundChatListener extends LiteMod | |
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); | |
19 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.network.play.client.C01PacketChatMessage; | |
4 | + | |
5 | +/** | |
6 | + * Interface for mods which want to monitor outbound chat | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface OutboundChatListener extends LiteMod | |
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); | |
19 | +} | ... | ... |
java/client/com/mumfrey/liteloader/PostLoginListener.java renamed to src/client/java/com/mumfrey/liteloader/PostLoginListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.network.login.INetHandlerLoginClient; | |
4 | -import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
5 | - | |
6 | -/** | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface PostLoginListener extends LiteMod | |
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); | |
20 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.network.login.INetHandlerLoginClient; | |
4 | +import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
5 | + | |
6 | +/** | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface PostLoginListener extends LiteMod | |
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); | |
20 | +} | ... | ... |
java/client/com/mumfrey/liteloader/PostRenderListener.java renamed to src/client/java/com/mumfrey/liteloader/PostRenderListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -/** | |
4 | - * Render callback that gets called AFTER entities are rendered | |
5 | - * | |
6 | - * @author Adam Mummery-Smith | |
7 | - */ | |
8 | -public interface PostRenderListener extends LiteMod | |
9 | -{ | |
10 | - /** | |
11 | - * Called after entities are rendered but before particles | |
12 | - * | |
13 | - * @param partialTicks | |
14 | - */ | |
15 | - public abstract void onPostRenderEntities(float partialTicks); | |
16 | - | |
17 | - /** | |
18 | - * Called after all world rendering is completed | |
19 | - * | |
20 | - * @param partialTicks | |
21 | - */ | |
22 | - public abstract void onPostRender(float partialTicks); | |
23 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +/** | |
4 | + * Render callback that gets called AFTER entities are rendered | |
5 | + * | |
6 | + * @author Adam Mummery-Smith | |
7 | + */ | |
8 | +public interface PostRenderListener extends LiteMod | |
9 | +{ | |
10 | + /** | |
11 | + * Called after entities are rendered but before particles | |
12 | + * | |
13 | + * @param partialTicks | |
14 | + */ | |
15 | + public abstract void onPostRenderEntities(float partialTicks); | |
16 | + | |
17 | + /** | |
18 | + * Called after all world rendering is completed | |
19 | + * | |
20 | + * @param partialTicks | |
21 | + */ | |
22 | + public abstract void onPostRender(float partialTicks); | |
23 | +} | ... | ... |
java/client/com/mumfrey/liteloader/PreRenderListener.java renamed to src/client/java/com/mumfrey/liteloader/PreRenderListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.renderer.RenderGlobal; | |
4 | - | |
5 | -/** | |
6 | - * Render callbacks that get called before certain render events | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface PreRenderListener extends LiteMod | |
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); | |
44 | - | |
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); | |
52 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.renderer.RenderGlobal; | |
4 | + | |
5 | +/** | |
6 | + * Render callbacks that get called before certain render events | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface PreRenderListener extends LiteMod | |
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); | |
44 | + | |
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); | |
52 | +} | ... | ... |
java/client/com/mumfrey/liteloader/RenderListener.java renamed to src/client/java/com/mumfrey/liteloader/RenderListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.gui.GuiScreen; | |
4 | - | |
5 | -/** | |
6 | - * Interface for objects which want a pre-render callback | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface RenderListener extends LiteMod | |
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(); | |
31 | - | |
32 | - /** | |
33 | - * Called immediately after the world/camera transform is initialised | |
34 | - */ | |
35 | - public abstract void onSetupCameraTransform(); | |
36 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.gui.GuiScreen; | |
4 | + | |
5 | +/** | |
6 | + * Interface for objects which want a pre-render callback | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface RenderListener extends LiteMod | |
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(); | |
31 | + | |
32 | + /** | |
33 | + * Called immediately after the world/camera transform is initialised | |
34 | + */ | |
35 | + public abstract void onSetupCameraTransform(); | |
36 | +} | ... | ... |
java/client/com/mumfrey/liteloader/ScreenshotListener.java renamed to src/client/java/com/mumfrey/liteloader/ScreenshotListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.shader.Framebuffer; | |
4 | -import net.minecraft.util.IChatComponent; | |
5 | - | |
6 | -import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
7 | - | |
8 | -/** | |
9 | - * Interface for mods which want to handle or inhibit the saving of screenshots | |
10 | - * | |
11 | - * @author Adam Mummery-Smith | |
12 | - */ | |
13 | -public interface ScreenshotListener extends LiteMod | |
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); | |
27 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.shader.Framebuffer; | |
4 | +import net.minecraft.util.IChatComponent; | |
5 | + | |
6 | +import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
7 | + | |
8 | +/** | |
9 | + * Interface for mods which want to handle or inhibit the saving of screenshots | |
10 | + * | |
11 | + * @author Adam Mummery-Smith | |
12 | + */ | |
13 | +public interface ScreenshotListener extends LiteMod | |
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); | |
27 | +} | ... | ... |
java/client/com/mumfrey/liteloader/Tickable.java renamed to src/client/java/com/mumfrey/liteloader/Tickable.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | - | |
5 | -/** | |
6 | - * Interface for mods which want tick events | |
7 | - * | |
8 | - * @author Adam Mummery-Smith | |
9 | - */ | |
10 | -public interface Tickable extends LiteMod | |
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); | |
21 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | + | |
5 | +/** | |
6 | + * Interface for mods which want tick events | |
7 | + * | |
8 | + * @author Adam Mummery-Smith | |
9 | + */ | |
10 | +public interface Tickable extends LiteMod | |
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); | |
21 | +} | ... | ... |
java/client/com/mumfrey/liteloader/ViewportListener.java renamed to src/client/java/com/mumfrey/liteloader/ViewportListener.java
1 | -package com.mumfrey.liteloader; | |
2 | - | |
3 | -import net.minecraft.client.gui.ScaledResolution; | |
4 | - | |
5 | -public interface ViewportListener extends LiteMod | |
6 | -{ | |
7 | - public abstract void onViewportResized(ScaledResolution resolution, int displayWidth, int displayHeight); | |
8 | - | |
9 | - public abstract void onFullScreenToggled(boolean fullScreen); | |
10 | -} | |
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import net.minecraft.client.gui.ScaledResolution; | |
4 | + | |
5 | +public interface ViewportListener extends LiteMod | |
6 | +{ | |
7 | + public abstract void onViewportResized(ScaledResolution resolution, int displayWidth, int displayHeight); | |
8 | + | |
9 | + public abstract void onFullScreenToggled(boolean fullScreen); | |
10 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/CallbackProxyClient.java renamed to src/client/java/com/mumfrey/liteloader/client/CallbackProxyClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import java.io.File; | |
4 | -import java.util.UUID; | |
5 | - | |
6 | -import net.minecraft.client.Minecraft; | |
7 | -import net.minecraft.client.entity.EntityPlayerSP; | |
8 | -import net.minecraft.client.gui.GuiIngame; | |
9 | -import net.minecraft.client.renderer.EntityRenderer; | |
10 | -import net.minecraft.client.renderer.OpenGlHelper; | |
11 | -import net.minecraft.client.renderer.RenderGlobal; | |
12 | -import net.minecraft.client.renderer.entity.Render; | |
13 | -import net.minecraft.client.renderer.entity.RenderManager; | |
14 | -import net.minecraft.client.shader.Framebuffer; | |
15 | -import net.minecraft.entity.Entity; | |
16 | -import net.minecraft.entity.player.EntityPlayer; | |
17 | -import net.minecraft.server.integrated.IntegratedServer; | |
18 | -import net.minecraft.util.IChatComponent; | |
19 | -import net.minecraft.util.ScreenShotHelper; | |
20 | -import net.minecraft.util.Session; | |
21 | -import net.minecraft.world.WorldSettings; | |
22 | - | |
23 | -import com.mojang.authlib.GameProfile; | |
24 | -import com.mumfrey.liteloader.core.CallbackProxyCommon; | |
25 | -import com.mumfrey.liteloader.transformers.event.EventInfo; | |
26 | -import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | |
27 | - | |
28 | -/** | |
29 | - * Proxy class which handles the redirected calls from the injected callbacks 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. | |
32 | - * | |
33 | - * @author Adam Mummery-Smith | |
34 | - */ | |
35 | -public abstract class CallbackProxyClient extends CallbackProxyCommon | |
36 | -{ | |
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 | - } | |
213 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import java.io.File; | |
4 | +import java.util.UUID; | |
5 | + | |
6 | +import net.minecraft.client.Minecraft; | |
7 | +import net.minecraft.client.entity.EntityPlayerSP; | |
8 | +import net.minecraft.client.gui.GuiIngame; | |
9 | +import net.minecraft.client.renderer.EntityRenderer; | |
10 | +import net.minecraft.client.renderer.OpenGlHelper; | |
11 | +import net.minecraft.client.renderer.RenderGlobal; | |
12 | +import net.minecraft.client.renderer.entity.Render; | |
13 | +import net.minecraft.client.renderer.entity.RenderManager; | |
14 | +import net.minecraft.client.shader.Framebuffer; | |
15 | +import net.minecraft.entity.Entity; | |
16 | +import net.minecraft.entity.player.EntityPlayer; | |
17 | +import net.minecraft.server.integrated.IntegratedServer; | |
18 | +import net.minecraft.util.IChatComponent; | |
19 | +import net.minecraft.util.ScreenShotHelper; | |
20 | +import net.minecraft.util.Session; | |
21 | +import net.minecraft.world.WorldSettings; | |
22 | + | |
23 | +import com.mojang.authlib.GameProfile; | |
24 | +import com.mumfrey.liteloader.core.CallbackProxyCommon; | |
25 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
26 | +import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | |
27 | + | |
28 | +/** | |
29 | + * Proxy class which handles the redirected calls from the injected callbacks 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. | |
32 | + * | |
33 | + * @author Adam Mummery-Smith | |
34 | + */ | |
35 | +public abstract class CallbackProxyClient extends CallbackProxyCommon | |
36 | +{ | |
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 | + } | |
213 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java renamed to src/client/java/com/mumfrey/liteloader/client/ClientPluginChannelsClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | -import net.minecraft.client.network.NetHandlerLoginClient; | |
5 | -import net.minecraft.network.INetHandler; | |
6 | -import net.minecraft.network.NetworkManager; | |
7 | -import net.minecraft.network.PacketBuffer; | |
8 | -import net.minecraft.network.login.INetHandlerLoginClient; | |
9 | -import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
10 | -import net.minecraft.network.play.INetHandlerPlayClient; | |
11 | -import net.minecraft.network.play.client.C17PacketCustomPayload; | |
12 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
13 | -import net.minecraft.network.play.server.S3FPacketCustomPayload; | |
14 | - | |
15 | -import com.mumfrey.liteloader.client.util.PrivateFieldsClient; | |
16 | -import com.mumfrey.liteloader.core.ClientPluginChannels; | |
17 | -import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException; | |
18 | - | |
19 | -/** | |
20 | - * Handler for client plugin channels | |
21 | - * | |
22 | - * @author Adam Mummery-Smith | |
23 | - */ | |
24 | -public class ClientPluginChannelsClient extends ClientPluginChannels | |
25 | -{ | |
26 | - /** | |
27 | - * @param netHandler | |
28 | - * @param loginPacket | |
29 | - */ | |
30 | - void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess loginPacket) | |
31 | - { | |
32 | - this.clearPluginChannels(netHandler); | |
33 | - } | |
34 | - | |
35 | - /** | |
36 | - * @param netHandler | |
37 | - * @param loginPacket | |
38 | - */ | |
39 | - void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | |
40 | - { | |
41 | - this.sendRegisteredPluginChannels(netHandler); | |
42 | - } | |
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 | - } | |
60 | - | |
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 | - } | |
78 | - | |
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 | - } | |
100 | - | |
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 | - } | |
120 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | +import net.minecraft.client.network.NetHandlerLoginClient; | |
5 | +import net.minecraft.network.INetHandler; | |
6 | +import net.minecraft.network.NetworkManager; | |
7 | +import net.minecraft.network.PacketBuffer; | |
8 | +import net.minecraft.network.login.INetHandlerLoginClient; | |
9 | +import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
10 | +import net.minecraft.network.play.INetHandlerPlayClient; | |
11 | +import net.minecraft.network.play.client.C17PacketCustomPayload; | |
12 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
13 | +import net.minecraft.network.play.server.S3FPacketCustomPayload; | |
14 | + | |
15 | +import com.mumfrey.liteloader.client.util.PrivateFieldsClient; | |
16 | +import com.mumfrey.liteloader.core.ClientPluginChannels; | |
17 | +import com.mumfrey.liteloader.core.exceptions.UnregisteredChannelException; | |
18 | + | |
19 | +/** | |
20 | + * Handler for client plugin channels | |
21 | + * | |
22 | + * @author Adam Mummery-Smith | |
23 | + */ | |
24 | +public class ClientPluginChannelsClient extends ClientPluginChannels | |
25 | +{ | |
26 | + /** | |
27 | + * @param netHandler | |
28 | + * @param loginPacket | |
29 | + */ | |
30 | + void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess loginPacket) | |
31 | + { | |
32 | + this.clearPluginChannels(netHandler); | |
33 | + } | |
34 | + | |
35 | + /** | |
36 | + * @param netHandler | |
37 | + * @param loginPacket | |
38 | + */ | |
39 | + void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | |
40 | + { | |
41 | + this.sendRegisteredPluginChannels(netHandler); | |
42 | + } | |
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 | + } | |
60 | + | |
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 | + } | |
78 | + | |
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 | + } | |
100 | + | |
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 | + } | |
120 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/GameEngineClient.java renamed to src/client/java/com/mumfrey/liteloader/client/GameEngineClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import java.util.Arrays; | |
4 | -import java.util.LinkedList; | |
5 | -import java.util.List; | |
6 | - | |
7 | -import net.minecraft.client.Minecraft; | |
8 | -import net.minecraft.client.audio.SoundHandler; | |
9 | -import net.minecraft.client.gui.GuiNewChat; | |
10 | -import net.minecraft.client.gui.GuiScreen; | |
11 | -import net.minecraft.client.gui.ScaledResolution; | |
12 | -import net.minecraft.client.settings.GameSettings; | |
13 | -import net.minecraft.client.settings.KeyBinding; | |
14 | -import net.minecraft.profiler.Profiler; | |
15 | -import net.minecraft.server.integrated.IntegratedServer; | |
16 | - | |
17 | -import com.mumfrey.liteloader.client.overlays.IMinecraft; | |
18 | -import com.mumfrey.liteloader.common.GameEngine; | |
19 | -import com.mumfrey.liteloader.common.Resources; | |
20 | - | |
21 | -/** | |
22 | - * | |
23 | - * @author Adam Mummery-Smith | |
24 | - */ | |
25 | -public class GameEngineClient implements GameEngine<Minecraft, IntegratedServer> | |
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 | - } | |
158 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import java.util.Arrays; | |
4 | +import java.util.LinkedList; | |
5 | +import java.util.List; | |
6 | + | |
7 | +import net.minecraft.client.Minecraft; | |
8 | +import net.minecraft.client.audio.SoundHandler; | |
9 | +import net.minecraft.client.gui.GuiNewChat; | |
10 | +import net.minecraft.client.gui.GuiScreen; | |
11 | +import net.minecraft.client.gui.ScaledResolution; | |
12 | +import net.minecraft.client.settings.GameSettings; | |
13 | +import net.minecraft.client.settings.KeyBinding; | |
14 | +import net.minecraft.profiler.Profiler; | |
15 | +import net.minecraft.server.integrated.IntegratedServer; | |
16 | + | |
17 | +import com.mumfrey.liteloader.client.overlays.IMinecraft; | |
18 | +import com.mumfrey.liteloader.common.GameEngine; | |
19 | +import com.mumfrey.liteloader.common.Resources; | |
20 | + | |
21 | +/** | |
22 | + * | |
23 | + * @author Adam Mummery-Smith | |
24 | + */ | |
25 | +public class GameEngineClient implements GameEngine<Minecraft, IntegratedServer> | |
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 | + } | |
158 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/LiteLoaderCoreProviderClient.java renamed to src/client/java/com/mumfrey/liteloader/client/LiteLoaderCoreProviderClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import net.minecraft.client.resources.IResourceManager; | |
4 | -import net.minecraft.client.resources.IResourcePack; | |
5 | -import net.minecraft.client.resources.SimpleReloadableResourceManager; | |
6 | -import net.minecraft.network.INetHandler; | |
7 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
8 | -import net.minecraft.world.World; | |
9 | - | |
10 | -import com.mumfrey.liteloader.api.CoreProvider; | |
11 | -import com.mumfrey.liteloader.common.GameEngine; | |
12 | -import com.mumfrey.liteloader.common.Resources; | |
13 | -import com.mumfrey.liteloader.core.LiteLoader; | |
14 | -import com.mumfrey.liteloader.core.LiteLoaderMods; | |
15 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
16 | -import com.mumfrey.liteloader.resources.InternalResourcePack; | |
17 | - | |
18 | -/** | |
19 | - * CoreProvider which fixes SoundManager derping up at startup | |
20 | - * | |
21 | - * @author Adam Mummery-Smith | |
22 | - */ | |
23 | -public class LiteLoaderCoreProviderClient implements CoreProvider | |
24 | -{ | |
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 | - } | |
105 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import net.minecraft.client.resources.IResourceManager; | |
4 | +import net.minecraft.client.resources.IResourcePack; | |
5 | +import net.minecraft.client.resources.SimpleReloadableResourceManager; | |
6 | +import net.minecraft.network.INetHandler; | |
7 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
8 | +import net.minecraft.world.World; | |
9 | + | |
10 | +import com.mumfrey.liteloader.api.CoreProvider; | |
11 | +import com.mumfrey.liteloader.common.GameEngine; | |
12 | +import com.mumfrey.liteloader.common.Resources; | |
13 | +import com.mumfrey.liteloader.core.LiteLoader; | |
14 | +import com.mumfrey.liteloader.core.LiteLoaderMods; | |
15 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
16 | +import com.mumfrey.liteloader.resources.InternalResourcePack; | |
17 | + | |
18 | +/** | |
19 | + * CoreProvider which fixes SoundManager derping up at startup | |
20 | + * | |
21 | + * @author Adam Mummery-Smith | |
22 | + */ | |
23 | +public class LiteLoaderCoreProviderClient implements CoreProvider | |
24 | +{ | |
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 | + } | |
105 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/LiteLoaderEventBrokerClient.java renamed to src/client/java/com/mumfrey/liteloader/client/LiteLoaderEventBrokerClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | -import net.minecraft.client.entity.EntityPlayerSP; | |
5 | -import net.minecraft.client.gui.GuiNewChat; | |
6 | -import net.minecraft.client.gui.ScaledResolution; | |
7 | -import net.minecraft.client.renderer.RenderGlobal; | |
8 | -import net.minecraft.client.renderer.entity.Render; | |
9 | -import net.minecraft.client.renderer.entity.RenderManager; | |
10 | -import net.minecraft.client.resources.IResourceManager; | |
11 | -import net.minecraft.client.resources.IResourceManagerReloadListener; | |
12 | -import net.minecraft.client.shader.Framebuffer; | |
13 | -import net.minecraft.entity.Entity; | |
14 | -import net.minecraft.network.play.client.C01PacketChatMessage; | |
15 | -import net.minecraft.server.integrated.IntegratedServer; | |
16 | -import net.minecraft.util.IChatComponent; | |
17 | -import net.minecraft.util.ScreenShotHelper; | |
18 | -import net.minecraft.util.Timer; | |
19 | - | |
20 | -import org.lwjgl.input.Mouse; | |
21 | - | |
22 | -import com.mumfrey.liteloader.*; | |
23 | -import com.mumfrey.liteloader.client.overlays.IEntityRenderer; | |
24 | -import com.mumfrey.liteloader.client.overlays.IMinecraft; | |
25 | -import com.mumfrey.liteloader.common.LoadingProgress; | |
26 | -import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
27 | -import com.mumfrey.liteloader.core.LiteLoader; | |
28 | -import com.mumfrey.liteloader.core.LiteLoaderEventBroker; | |
29 | -import com.mumfrey.liteloader.core.event.HandlerList; | |
30 | -import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
31 | -import com.mumfrey.liteloader.core.event.ProfilingHandlerList; | |
32 | -import com.mumfrey.liteloader.interfaces.FastIterableDeque; | |
33 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
34 | -import com.mumfrey.liteloader.transformers.event.EventInfo; | |
35 | -import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | |
36 | -import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
37 | - | |
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 | - } | |
562 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | +import net.minecraft.client.entity.EntityPlayerSP; | |
5 | +import net.minecraft.client.gui.GuiNewChat; | |
6 | +import net.minecraft.client.gui.ScaledResolution; | |
7 | +import net.minecraft.client.renderer.RenderGlobal; | |
8 | +import net.minecraft.client.renderer.entity.Render; | |
9 | +import net.minecraft.client.renderer.entity.RenderManager; | |
10 | +import net.minecraft.client.resources.IResourceManager; | |
11 | +import net.minecraft.client.resources.IResourceManagerReloadListener; | |
12 | +import net.minecraft.client.shader.Framebuffer; | |
13 | +import net.minecraft.entity.Entity; | |
14 | +import net.minecraft.network.play.client.C01PacketChatMessage; | |
15 | +import net.minecraft.server.integrated.IntegratedServer; | |
16 | +import net.minecraft.util.IChatComponent; | |
17 | +import net.minecraft.util.ScreenShotHelper; | |
18 | +import net.minecraft.util.Timer; | |
19 | + | |
20 | +import org.lwjgl.input.Mouse; | |
21 | + | |
22 | +import com.mumfrey.liteloader.*; | |
23 | +import com.mumfrey.liteloader.client.overlays.IEntityRenderer; | |
24 | +import com.mumfrey.liteloader.client.overlays.IMinecraft; | |
25 | +import com.mumfrey.liteloader.common.LoadingProgress; | |
26 | +import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
27 | +import com.mumfrey.liteloader.core.LiteLoader; | |
28 | +import com.mumfrey.liteloader.core.LiteLoaderEventBroker; | |
29 | +import com.mumfrey.liteloader.core.event.HandlerList; | |
30 | +import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
31 | +import com.mumfrey.liteloader.core.event.ProfilingHandlerList; | |
32 | +import com.mumfrey.liteloader.interfaces.FastIterableDeque; | |
33 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
34 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
35 | +import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | |
36 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
37 | + | |
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 | + } | |
562 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/LiteLoaderPanelManager.java renamed to src/client/java/com/mumfrey/liteloader/client/LiteLoaderPanelManager.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | -import net.minecraft.client.gui.GuiIngameMenu; | |
5 | -import net.minecraft.client.gui.GuiMainMenu; | |
6 | -import net.minecraft.client.gui.GuiOptions; | |
7 | -import net.minecraft.client.gui.GuiScreen; | |
8 | -import net.minecraft.client.resources.I18n; | |
9 | - | |
10 | -import org.lwjgl.input.Keyboard; | |
11 | - | |
12 | -import com.mumfrey.liteloader.client.gui.GuiLiteLoaderPanel; | |
13 | -import com.mumfrey.liteloader.common.GameEngine; | |
14 | -import com.mumfrey.liteloader.core.LiteLoaderMods; | |
15 | -import com.mumfrey.liteloader.core.LiteLoaderUpdateSite; | |
16 | -import com.mumfrey.liteloader.core.LiteLoaderVersion; | |
17 | -import com.mumfrey.liteloader.interfaces.PanelManager; | |
18 | -import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
19 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
20 | -import com.mumfrey.liteloader.modconfig.ConfigManager; | |
21 | -import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
22 | - | |
23 | -/** | |
24 | - * Observer which handles the display of the mod panel | |
25 | - * | |
26 | - * @author Adam Mummery-Smith | |
27 | - */ | |
28 | -public class LiteLoaderPanelManager implements PanelManager<GuiScreen> | |
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 | - } | |
287 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | +import net.minecraft.client.gui.GuiIngameMenu; | |
5 | +import net.minecraft.client.gui.GuiMainMenu; | |
6 | +import net.minecraft.client.gui.GuiOptions; | |
7 | +import net.minecraft.client.gui.GuiScreen; | |
8 | +import net.minecraft.client.resources.I18n; | |
9 | + | |
10 | +import org.lwjgl.input.Keyboard; | |
11 | + | |
12 | +import com.mumfrey.liteloader.client.gui.GuiLiteLoaderPanel; | |
13 | +import com.mumfrey.liteloader.common.GameEngine; | |
14 | +import com.mumfrey.liteloader.core.LiteLoaderMods; | |
15 | +import com.mumfrey.liteloader.core.LiteLoaderUpdateSite; | |
16 | +import com.mumfrey.liteloader.core.LiteLoaderVersion; | |
17 | +import com.mumfrey.liteloader.interfaces.PanelManager; | |
18 | +import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
19 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
20 | +import com.mumfrey.liteloader.modconfig.ConfigManager; | |
21 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
22 | + | |
23 | +/** | |
24 | + * Observer which handles the display of the mod panel | |
25 | + * | |
26 | + * @author Adam Mummery-Smith | |
27 | + */ | |
28 | +public class LiteLoaderPanelManager implements PanelManager<GuiScreen> | |
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 | + } | |
287 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/PacketEventsClient.java renamed to src/client/java/com/mumfrey/liteloader/client/PacketEventsClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import net.minecraft.client.Minecraft; | |
4 | -import net.minecraft.network.INetHandler; | |
5 | -import net.minecraft.network.Packet; | |
6 | -import net.minecraft.network.login.INetHandlerLoginClient; | |
7 | -import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
8 | -import net.minecraft.network.play.INetHandlerPlayClient; | |
9 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
10 | -import net.minecraft.network.play.server.S02PacketChat; | |
11 | -import net.minecraft.server.MinecraftServer; | |
12 | -import net.minecraft.util.ChatComponentText; | |
13 | -import net.minecraft.util.IChatComponent; | |
14 | -import net.minecraft.util.IThreadListener; | |
15 | - | |
16 | -import com.mojang.realmsclient.RealmsMainScreen; | |
17 | -import com.mojang.realmsclient.dto.RealmsServer; | |
18 | -import com.mumfrey.liteloader.ChatFilter; | |
19 | -import com.mumfrey.liteloader.ChatListener; | |
20 | -import com.mumfrey.liteloader.JoinGameListener; | |
21 | -import com.mumfrey.liteloader.PostLoginListener; | |
22 | -import com.mumfrey.liteloader.PreJoinGameListener; | |
23 | -import com.mumfrey.liteloader.client.util.PrivateFieldsClient; | |
24 | -import com.mumfrey.liteloader.common.transformers.PacketEventInfo; | |
25 | -import com.mumfrey.liteloader.core.ClientPluginChannels; | |
26 | -import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
27 | -import com.mumfrey.liteloader.core.LiteLoader; | |
28 | -import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
29 | -import com.mumfrey.liteloader.core.PacketEvents; | |
30 | -import com.mumfrey.liteloader.core.event.EventCancellationException; | |
31 | -import com.mumfrey.liteloader.core.event.HandlerList; | |
32 | -import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
33 | -import com.mumfrey.liteloader.core.runtime.Packets; | |
34 | -import com.mumfrey.liteloader.interfaces.FastIterableDeque; | |
35 | -import com.mumfrey.liteloader.transformers.event.EventInfo; | |
36 | -import com.mumfrey.liteloader.util.ChatUtilities; | |
37 | -import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
38 | - | |
39 | -/** | |
40 | - * Client-side packet event handlers | |
41 | - * | |
42 | - * @author Adam Mummery-Smith | |
43 | - */ | |
44 | -public class PacketEventsClient extends PacketEvents | |
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 | - } | |
254 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import net.minecraft.client.Minecraft; | |
4 | +import net.minecraft.network.INetHandler; | |
5 | +import net.minecraft.network.Packet; | |
6 | +import net.minecraft.network.login.INetHandlerLoginClient; | |
7 | +import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
8 | +import net.minecraft.network.play.INetHandlerPlayClient; | |
9 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
10 | +import net.minecraft.network.play.server.S02PacketChat; | |
11 | +import net.minecraft.server.MinecraftServer; | |
12 | +import net.minecraft.util.ChatComponentText; | |
13 | +import net.minecraft.util.IChatComponent; | |
14 | +import net.minecraft.util.IThreadListener; | |
15 | + | |
16 | +import com.mojang.realmsclient.RealmsMainScreen; | |
17 | +import com.mojang.realmsclient.dto.RealmsServer; | |
18 | +import com.mumfrey.liteloader.ChatFilter; | |
19 | +import com.mumfrey.liteloader.ChatListener; | |
20 | +import com.mumfrey.liteloader.JoinGameListener; | |
21 | +import com.mumfrey.liteloader.PostLoginListener; | |
22 | +import com.mumfrey.liteloader.PreJoinGameListener; | |
23 | +import com.mumfrey.liteloader.client.util.PrivateFieldsClient; | |
24 | +import com.mumfrey.liteloader.common.transformers.PacketEventInfo; | |
25 | +import com.mumfrey.liteloader.core.ClientPluginChannels; | |
26 | +import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
27 | +import com.mumfrey.liteloader.core.LiteLoader; | |
28 | +import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
29 | +import com.mumfrey.liteloader.core.PacketEvents; | |
30 | +import com.mumfrey.liteloader.core.event.EventCancellationException; | |
31 | +import com.mumfrey.liteloader.core.event.HandlerList; | |
32 | +import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
33 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
34 | +import com.mumfrey.liteloader.interfaces.FastIterableDeque; | |
35 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
36 | +import com.mumfrey.liteloader.util.ChatUtilities; | |
37 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
38 | + | |
39 | +/** | |
40 | + * Client-side packet event handlers | |
41 | + * | |
42 | + * @author Adam Mummery-Smith | |
43 | + */ | |
44 | +public class PacketEventsClient extends PacketEvents | |
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 | + } | |
254 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/ResourceObserver.java renamed to src/client/java/com/mumfrey/liteloader/client/ResourceObserver.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import java.io.File; | |
4 | -import java.util.HashMap; | |
5 | -import java.util.Map; | |
6 | - | |
7 | -import net.minecraft.client.resources.IResourceManager; | |
8 | -import net.minecraft.client.resources.IResourcePack; | |
9 | - | |
10 | -import com.mumfrey.liteloader.LiteMod; | |
11 | -import com.mumfrey.liteloader.api.ModLoadObserver; | |
12 | -import com.mumfrey.liteloader.common.Resources; | |
13 | -import com.mumfrey.liteloader.core.LiteLoader; | |
14 | -import com.mumfrey.liteloader.core.ModInfo; | |
15 | -import com.mumfrey.liteloader.interfaces.LoadableMod; | |
16 | -import com.mumfrey.liteloader.resources.ModResourcePack; | |
17 | -import com.mumfrey.liteloader.resources.ModResourcePackDir; | |
18 | -import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
19 | - | |
20 | -/** | |
21 | - * Observer which handles registering mods on the client as resource packs | |
22 | - * | |
23 | - * @author Adam Mummery-Smith | |
24 | - */ | |
25 | -public class ResourceObserver implements ModLoadObserver | |
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 | - } | |
115 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import java.io.File; | |
4 | +import java.util.HashMap; | |
5 | +import java.util.Map; | |
6 | + | |
7 | +import net.minecraft.client.resources.IResourceManager; | |
8 | +import net.minecraft.client.resources.IResourcePack; | |
9 | + | |
10 | +import com.mumfrey.liteloader.LiteMod; | |
11 | +import com.mumfrey.liteloader.api.ModLoadObserver; | |
12 | +import com.mumfrey.liteloader.common.Resources; | |
13 | +import com.mumfrey.liteloader.core.LiteLoader; | |
14 | +import com.mumfrey.liteloader.core.ModInfo; | |
15 | +import com.mumfrey.liteloader.interfaces.LoadableMod; | |
16 | +import com.mumfrey.liteloader.resources.ModResourcePack; | |
17 | +import com.mumfrey.liteloader.resources.ModResourcePackDir; | |
18 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
19 | + | |
20 | +/** | |
21 | + * Observer which handles registering mods on the client as resource packs | |
22 | + * | |
23 | + * @author Adam Mummery-Smith | |
24 | + */ | |
25 | +public class ResourceObserver implements ModLoadObserver | |
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 | + } | |
115 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/ResourcesClient.java renamed to src/client/java/com/mumfrey/liteloader/client/ResourcesClient.java
1 | -package com.mumfrey.liteloader.client; | |
2 | - | |
3 | -import java.util.HashMap; | |
4 | -import java.util.List; | |
5 | -import java.util.Map; | |
6 | - | |
7 | -import net.minecraft.client.Minecraft; | |
8 | -import net.minecraft.client.resources.IResourceManager; | |
9 | -import net.minecraft.client.resources.IResourcePack; | |
10 | - | |
11 | -import com.mumfrey.liteloader.client.overlays.IMinecraft; | |
12 | -import com.mumfrey.liteloader.common.LoadingProgress; | |
13 | -import com.mumfrey.liteloader.common.Resources; | |
14 | - | |
15 | -public class ResourcesClient implements Resources<IResourceManager, IResourcePack> | |
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>(); | |
23 | - | |
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; | |
28 | - | |
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 | - } | |
42 | - | |
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; | |
61 | - | |
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; | |
83 | - | |
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 | - } | |
92 | -} | |
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import java.util.HashMap; | |
4 | +import java.util.List; | |
5 | +import java.util.Map; | |
6 | + | |
7 | +import net.minecraft.client.Minecraft; | |
8 | +import net.minecraft.client.resources.IResourceManager; | |
9 | +import net.minecraft.client.resources.IResourcePack; | |
10 | + | |
11 | +import com.mumfrey.liteloader.client.overlays.IMinecraft; | |
12 | +import com.mumfrey.liteloader.common.LoadingProgress; | |
13 | +import com.mumfrey.liteloader.common.Resources; | |
14 | + | |
15 | +public class ResourcesClient implements Resources<IResourceManager, IResourcePack> | |
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>(); | |
23 | + | |
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; | |
28 | + | |
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 | + } | |
42 | + | |
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; | |
61 | + | |
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; | |
83 | + | |
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 | + } | |
92 | +} | ... | ... |