LiteLoaderEventInjectionTransformer.java
9.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.mumfrey.liteloader.client.transformers;
import static com.mumfrey.liteloader.core.runtime.Methods.*;
import static com.mumfrey.liteloader.transformers.event.InjectionPoint.*;
import com.mumfrey.liteloader.common.transformers.LiteLoaderEventTransformer;
import com.mumfrey.liteloader.core.runtime.Obf;
import com.mumfrey.liteloader.transformers.event.Event;
import com.mumfrey.liteloader.transformers.event.InjectionPoint;
import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke;
import com.mumfrey.liteloader.transformers.event.inject.BeforeNew;
import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn;
import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke;
import com.mumfrey.liteloader.transformers.event.inject.MethodHead;
/**
* Injector for LiteLoader's main events
*
* @author Adam Mummery-Smith
*/
public class LiteLoaderEventInjectionTransformer extends LiteLoaderEventTransformer
{
@Override
protected Obf getProxy()
{
return Obf.CallbackProxyClient;
}
@Override
protected void addEvents()
{
super.addEvents();
// Event declaraions
Event onOutboundChat = Event.getOrCreate("onOutboundChat", true);
Event onResize = Event.getOrCreate("updateFramebufferSize", false);
Event preRenderFBO = Event.getOrCreate("preRenderFBO", false);
Event renderFBO = Event.getOrCreate("renderFBO", false);
Event postRenderFBO = Event.getOrCreate("postRenderFBO", false);
Event onRenderWorld = Event.getOrCreate("onRenderWorld", false);
Event onRenderSky = Event.getOrCreate("onRenderSky", false);
Event onRenderClouds = Event.getOrCreate("onRenderClouds", false);
Event onRenderTerrain = Event.getOrCreate("onRenderTerrain", false);
Event onTimerUpdate = Event.getOrCreate("onTimerUpdate", false);
Event onRender = Event.getOrCreate("onRender", false);
Event newTick = Event.getOrCreate("newTick", false);
Event onTick = Event.getOrCreate("onTick", false);
Event preRenderGUI = Event.getOrCreate("preRenderGUI", false);
Event onRenderHUD = Event.getOrCreate("onRenderHUD", false);
Event postRenderHUD = Event.getOrCreate("postRenderHUD", false);
Event onSetupCameraTransform = Event.getOrCreate("onSetupCameraTransform", false);
Event postRenderEntities = Event.getOrCreate("postRenderEntities", false);
Event postRender = Event.getOrCreate("postRender", false);
Event onRenderChat = Event.getOrCreate("onRenderChat", false);
Event postRenderChat = Event.getOrCreate("postRenderChat", false);
Event onCreateIntegratedServer = Event.getOrCreate("onCreateIntegratedServer", false);
Event onStartupComplete = Event.getOrCreate("onStartupComplete", false);
Event onSessionProfileBad = Event.getOrCreate("onSessionProfileBad", true);
Event onSaveScreenshot = Event.getOrCreate("onSaveScreenshot", true);
Event onRenderEntity = Event.getOrCreate("onRenderEntity", false);
Event onPostRenderEntity = Event.getOrCreate("onPostRenderEntity", false);
Event onJoinRealm = Event.getOrCreate("onJoinRealm", false);
// Injection Points
InjectionPoint methodHead = new MethodHead();
InjectionPoint methodReturn = new BeforeReturn();
InjectionPoint beforeGlClear = new BeforeInvoke(glClear);
InjectionPoint beforeFBORender = new BeforeInvoke(framebufferRender);
InjectionPoint beforeRenderHUD = new BeforeInvoke(renderGameOverlay);
InjectionPoint beforeBindFBOTex = new BeforeInvoke(bindFramebufferTexture);
InjectionPoint beforeRender = new BeforeInvoke(updateCameraAndRender);
InjectionPoint beforeDrawChat = new BeforeInvoke(drawChat);
InjectionPoint beforeEndProfiler = new BeforeInvoke(endSection);
InjectionPoint beforeIsFBOEnabled = new BeforeInvoke(isFramebufferEnabled);
InjectionPoint beforeRenderEntity = new BeforeInvoke(doRender).setCaptureLocals(true);
InjectionPoint beforeStopRealsmFetcher = new BeforeInvoke(realmsStopFetcher).setCaptureLocals(true);
InjectionPoint beforeTickProfiler = new BeforeStringInvoke("tick", startSection);
InjectionPoint beforeCenterProfiler = new BeforeStringInvoke("center", startSection);
InjectionPoint beforeSkyProfiler = new BeforeStringInvoke("sky", endStartSection);
InjectionPoint beforeCloudsProfiler = new BeforeStringInvoke("clouds", endStartSection);
InjectionPoint beforeTerrainProfiler = new BeforeStringInvoke("terrain", endStartSection);
InjectionPoint beforeRenderProfiler = new BeforeStringInvoke("gameRenderer", endStartSection);
InjectionPoint beforeFrustumProfiler = new BeforeStringInvoke("frustum", endStartSection);
InjectionPoint beforeParticlesProfiler = new BeforeStringInvoke("litParticles", endStartSection);
InjectionPoint beforeNewGameProfile = new BeforeNew(1, Obf.GameProfile);
// Hooks
this.add(onOutboundChat, sendChatMessage, (methodHead), "onOutboundChat");
this.add(onResize, updateFramebufferSize, (methodHead), "onResize");
this.add(preRenderFBO, runGameLoop, (beforeFBORender), "preRenderFBO");
this.add(renderFBO, framebufferRenderExt, (beforeBindFBOTex), "renderFBO");
this.add(postRenderFBO, runGameLoop, after(beforeFBORender), "postRenderFBO");
this.add(onRenderWorld, renderWorld, (beforeCenterProfiler), "onRenderWorld");
this.add(onRenderSky, renderWorldPass, (beforeSkyProfiler), "onRenderSky");
this.add(onRenderClouds, renderCloudsCheck, (beforeCloudsProfiler), "onRenderClouds");
this.add(onRenderTerrain, renderWorldPass, (beforeTerrainProfiler), "onRenderTerrain");
this.add(onTimerUpdate, runGameLoop, (beforeTickProfiler), "onTimerUpdate");
this.add(onRender, runGameLoop, (beforeRenderProfiler), "onRender");
this.add(newTick, runTick, (methodHead), "newTick");
this.add(onTick, runGameLoop, after(beforeRender), "onTick");
this.add(preRenderGUI, updateCameraAndRender, after(beforeGlClear), "preRenderGUI");
this.add(onRenderHUD, updateCameraAndRender, (beforeRenderHUD), "onRenderHUD");
this.add(postRenderHUD, updateCameraAndRender, after(beforeRenderHUD), "postRenderHUD");
this.add(onSetupCameraTransform, renderWorldPass, (beforeFrustumProfiler), "onSetupCameraTransform");
this.add(postRenderEntities, renderWorldPass, (beforeParticlesProfiler), "postRenderEntities");
this.add(postRender, renderWorld, (beforeEndProfiler), "postRender");
this.add(onRenderChat, renderGameOverlay, (beforeDrawChat), "onRenderChat");
this.add(postRenderChat, renderGameOverlay, after(beforeDrawChat), "postRenderChat");
this.add(onCreateIntegratedServer, integratedServerCtor, (methodReturn), "IntegratedServerCtor");
this.add(onStartupComplete, startGame, (methodReturn), "onStartupComplete");
this.add(onSaveScreenshot, saveScreenshot, (beforeIsFBOEnabled), "onSaveScreenshot");
this.add(onRenderEntity, doRenderEntity, (beforeRenderEntity), "onRenderEntity");
this.add(onPostRenderEntity, doRenderEntity, after(beforeRenderEntity), "onPostRenderEntity");
// Compatibility handlers
this.add(onSessionProfileBad, getProfile, (beforeNewGameProfile), "generateOfflineUUID");
// Protocol handlers
this.add(onJoinRealm, realmsPlay, (beforeStopRealsmFetcher), "onJoinRealm", Obf.PacketEventsClient);
}
}