Skip to content

Commit e9c0f6d

Browse files
committed
Merge remote-tracking branch 'origin/1.16' into 1.18
2 parents 8b00802 + 12d69be commit e9c0f6d

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.embeddedt.modernfix.forge.mixin.bugfix.entity_pose_stack;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
5+
import net.minecraftforge.client.event.RenderLivingEvent;
6+
import net.minecraftforge.eventbus.api.Event;
7+
import net.minecraftforge.eventbus.api.IEventBus;
8+
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Redirect;
12+
13+
@Mixin(LivingEntityRenderer.class)
14+
@ClientOnlyMixin
15+
public class LivingEntityRendererMixin {
16+
@Redirect(method = "render(Lnet/minecraft/world/entity/LivingEntity;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/eventbus/api/IEventBus;post(Lnet/minecraftforge/eventbus/api/Event;)Z", ordinal = 0))
17+
private boolean fireCheckingPoseStack(IEventBus instance, Event event) {
18+
PoseStack stack = ((RenderLivingEvent)event).getMatrixStack();
19+
int size = ((PoseStackAccessor)stack).getPoseStack().size();
20+
if (instance.post(event)) {
21+
// Pop the stack if someone pushed it in the event
22+
while (((PoseStackAccessor)stack).getPoseStack().size() > size) {
23+
stack.popPose();
24+
}
25+
return true;
26+
} else {
27+
return false;
28+
}
29+
}
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.embeddedt.modernfix.forge.mixin.bugfix.entity_pose_stack;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
5+
import net.minecraftforge.client.event.RenderPlayerEvent;
6+
import net.minecraftforge.eventbus.api.Event;
7+
import net.minecraftforge.eventbus.api.IEventBus;
8+
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Redirect;
12+
13+
@Mixin(PlayerRenderer.class)
14+
@ClientOnlyMixin
15+
public class PlayerRendererMixin {
16+
@Redirect(method = "render(Lnet/minecraft/client/player/AbstractClientPlayer;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/eventbus/api/IEventBus;post(Lnet/minecraftforge/eventbus/api/Event;)Z", ordinal = 0))
17+
private boolean fireCheckingPoseStack(IEventBus instance, Event event) {
18+
PoseStack stack = ((RenderPlayerEvent)event).getMatrixStack();
19+
int size = ((PoseStackAccessor)stack).getPoseStack().size();
20+
if (instance.post(event)) {
21+
// Pop the stack if someone pushed it in the event
22+
while (((PoseStackAccessor)stack).getPoseStack().size() > size) {
23+
stack.popPose();
24+
}
25+
return true;
26+
} else {
27+
return false;
28+
}
29+
}
30+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.embeddedt.modernfix.forge.mixin.bugfix.entity_pose_stack;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.gen.Accessor;
7+
8+
import java.util.Deque;
9+
10+
@Mixin(PoseStack.class)
11+
@ClientOnlyMixin
12+
public interface PoseStackAccessor {
13+
@Accessor
14+
Deque<PoseStack.Pose> getPoseStack();
15+
}

0 commit comments

Comments
 (0)