Skip to content
This repository was archived by the owner on Feb 19, 2019. It is now read-only.

Commit f221799

Browse files
committed
Liteloader compatible renderEntity hook
1 parent 75117c9 commit f221799

1 file changed

Lines changed: 21 additions & 9 deletions

File tree

src/main/java/clientapi/load/mixin/MixinRenderManager.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
import net.minecraft.entity.Entity;
2525
import org.spongepowered.asm.mixin.Mixin;
2626
import org.spongepowered.asm.mixin.injection.At;
27-
import org.spongepowered.asm.mixin.injection.Redirect;
27+
import org.spongepowered.asm.mixin.injection.Inject;
28+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
29+
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
2830

2931
/**
3032
* @author Brady
@@ -33,14 +35,24 @@
3335
@Mixin(RenderManager.class)
3436
public class MixinRenderManager {
3537

36-
@Redirect(method = "renderEntity(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At(value = "INVOKE", target = "net/minecraft/client/renderer/entity/Render.doRender(Lnet/minecraft/entity/Entity;DDDFF)V"))
37-
@SuppressWarnings("unchecked")
38-
private void renderEntity$doRender(Render render, Entity entity, double x, double y, double z, float entityYaw, float partialTicks) {
39-
EntityRenderEvent event = new EntityRenderEvent(EventState.PRE, render, entity, x, y, z, entityYaw, partialTicks);
40-
ClientAPI.EVENT_BUS.post(event);
41-
if (!event.isCancelled())
42-
render.doRender(entity, x, y, z, entityYaw, partialTicks);
38+
@Inject(
39+
method = "renderEntity",
40+
at = @At(
41+
value = "INVOKE",
42+
target = "net/minecraft/client/renderer/entity/Render.setRenderOutlines(Z)V"),
43+
locals = LocalCapture.CAPTURE_FAILHARD,
44+
cancellable = true
45+
)
46+
private void preRenderEntity(Entity entityIn, double x, double y, double z, float yaw, float partialTicks, boolean p_188391_10_, CallbackInfo ci, Render render) {
47+
EntityRenderEvent entityRenderEvent = new EntityRenderEvent(EventState.PRE, render, entityIn, x, y, z, yaw, partialTicks);
48+
ClientAPI.EVENT_BUS.post(entityRenderEvent);
49+
if (entityRenderEvent.isCancelled()) {
50+
ci.cancel();
51+
}
52+
}
4353

44-
ClientAPI.EVENT_BUS.post(new EntityRenderEvent(EventState.POST, render, entity, x, y, x, entityYaw, partialTicks));
54+
@Inject(method = "renderEntity", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD)
55+
private void postRenderEntity(Entity entityIn, double x, double y, double z, float yaw, float partialTicks, boolean p_188391_10_, CallbackInfo ci, Render render) {
56+
ClientAPI.EVENT_BUS.post(new EntityRenderEvent(EventState.POST, render, entityIn, x, y, z, yaw, partialTicks));
4557
}
4658
}

0 commit comments

Comments
 (0)