Skip to content

Commit 4776afc

Browse files
Merge pull request #291 from Riftlight/1.20ArrowFunc
Add arrow hiding function
2 parents 2ba86ff + fcd7878 commit 4776afc

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

common/src/main/java/org/figuramc/figura/lua/api/RendererAPI.java

+17
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public class RendererAPI {
6262
public FiguraVec4 blockOutlineColor;
6363
public Boolean upsideDown;
6464
public Boolean rootRotation;
65+
public Boolean renderArrows;
6566

6667
public RendererAPI(Avatar owner) {
6768
this.owner = owner.owner;
@@ -439,6 +440,22 @@ public RendererAPI postEffect(String effect) {
439440
return setPostEffect(effect);
440441
}
441442

443+
@LuaWhitelist
444+
@LuaMethodDoc(
445+
overloads = @LuaMethodOverload(
446+
argumentTypes = Boolean.class,
447+
argumentNames = "bool"
448+
),
449+
aliases = "renderArrows",
450+
value = "renderer.set_render_arrows"
451+
)
452+
public RendererAPI setRenderArrows(Boolean bool) {
453+
this.renderArrows = bool;
454+
return this;
455+
}
456+
@LuaWhitelist
457+
public RendererAPI renderArrows(Boolean bool) { return setRenderArrows(bool); }
458+
442459
@LuaWhitelist
443460
@LuaMethodDoc("renderer.get_fov")
444461
public Float getFOV() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.figuramc.figura.mixin.render.renderers;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import net.minecraft.client.renderer.MultiBufferSource;
5+
import net.minecraft.client.renderer.entity.layers.ArrowLayer;
6+
import net.minecraft.world.entity.Entity;
7+
import org.figuramc.figura.FiguraMod;
8+
import org.figuramc.figura.avatar.Avatar;
9+
import org.figuramc.figura.avatar.AvatarManager;
10+
import org.figuramc.figura.permissions.Permissions;
11+
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
15+
16+
@Mixin(ArrowLayer.class)
17+
public abstract class StuckArrowsFeatureRendererMixin {
18+
@Inject(method = "renderStuckItem", at = @At("HEAD"), cancellable = true)
19+
private void disableStuckArrowsRendering(PoseStack matrices, MultiBufferSource vertexConsumers, int light, Entity entity, float directionX, float directionY, float directionZ, float tickDelta, CallbackInfo ci) {
20+
Avatar avatar = AvatarManager.getAvatar(entity);
21+
if (avatar != null && avatar.luaRuntime != null
22+
&& avatar.luaRuntime.renderer.renderArrows != null
23+
&& !avatar.luaRuntime.renderer.renderArrows
24+
&& avatar.permissions.get(Permissions.VANILLA_MODEL_EDIT) == 1) {
25+
ci.cancel();
26+
}
27+
}
28+
}

common/src/main/resources/assets/figura/lang/en_us.json

+1
Original file line numberDiff line numberDiff line change
@@ -1505,6 +1505,7 @@
15051505
"figura.docs.renderer.get_camera_normal": "Returns the modified camera normal matrix",
15061506
"figura.docs.renderer.set_camera_normal": "Sets the camera normal matrix with the given matrix",
15071507
"figura.docs.renderer.set_post_effect": "Sets the current rendering effect\nSame as the discontinued Super Secret Settings",
1508+
"figura.docs.renderer.set_render_arrows": "Sets whether or not arrows should be rendered",
15081509
"figura.docs.renderer.get_fov": "Gets the multiplier of your fov",
15091510
"figura.docs.renderer.set_fov": "Sets the multiplier of your fov\nThe default value is nil, which means no changes will be applied to your fov",
15101511
"figura.docs.renderer.get_crosshair_offset": "Gets the offset of your crosshair",

common/src/main/resources/figura-common.mixins.json

+1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
"render.renderers.ScreenEffectRendererMixin",
9393
"render.renderers.SignRendererMixin",
9494
"render.renderers.SkullBlockRendererMixin",
95+
"render.renderers.StuckArrowsFeatureRendererMixin",
9596
"render.renderers.TridentRendererMixin",
9697
"render.PoseStackAccessor",
9798
"sound.ChannelHandleMixin",

0 commit comments

Comments
 (0)