Skip to content

Commit

Permalink
hide curios/trinket head cosmetics in first person
Browse files Browse the repository at this point in the history
  • Loading branch information
fayer3 committed Feb 19, 2025
1 parent 0dc21fd commit ad622bb
Show file tree
Hide file tree
Showing 10 changed files with 96 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.vivecraft.mod_compat_vr.curios.mixin;

import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.vivecraft.client_vr.render.helpers.VREffectsHelper;

@Pseudo
@Mixin(targets = "top.theillusivec4.curios.client.render.CuriosLayer")
public class CuriosLayerVRMixin {
@Inject(method = "lambda$render$1(Lnet/minecraft/world/entity/LivingEntity;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IFFFFFFLjava/lang/String;Ltop/theillusivec4/curios/api/type/inventory/ICurioStacksHandler;)V", at = @At("HEAD"), cancellable = true)
private void vivecraft$noHeadInFirstPerson(
CallbackInfo ci, @Local(argsOnly = true) LivingEntity entity, @Local(argsOnly = true) String id)
{
if ("head".equals(id) && VREffectsHelper.isRenderingFirstPersonPlayer(entity)) {
ci.cancel();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.vivecraft.mod_compat_vr.trinkets.mixin;

import com.llamalad7.mixinextras.sugar.Local;
import dev.emi.trinkets.api.SlotReference;
import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.vivecraft.client_vr.render.helpers.VREffectsHelper;

@Pseudo
@Mixin(targets = "dev.emi.trinkets.TrinketFeatureRenderer")
public class TrinketFeatureRendererVRMixin {

@Inject(method = "lambda$render$1(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/entity/LivingEntity;FFFFFFLdev/emi/trinkets/api/SlotReference;Lnet/minecraft/world/item/ItemStack;)V", at = @At("HEAD"), cancellable = true)
private void vivecraft$noHeadInFirstPerson(
CallbackInfo ci, @Local(argsOnly = true) LivingEntity entity, @Local(argsOnly = true) SlotReference reference)
{
if ("head".equals(reference.inventory().getSlotType().getGroup()) &&
VREffectsHelper.isRenderingFirstPersonPlayer(entity))
{
ci.cancel();
}
}
}
10 changes: 10 additions & 0 deletions common/src/main/resources/vivecraft.curios.mixins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"required": false,
"package": "org.vivecraft.mod_compat_vr.curios.mixin",
"plugin": "org.vivecraft.MixinConfig",
"compatibilityLevel": "JAVA_17",
"client": [
"CuriosLayerVRMixin"
],
"minVersion": "0.8.4"
}
10 changes: 10 additions & 0 deletions common/src/main/resources/vivecraft.trinkets.mixins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"required": false,
"package": "org.vivecraft.mod_compat_vr.trinkets.mixin",
"plugin": "org.vivecraft.MixinConfig",
"compatibilityLevel": "JAVA_17",
"client": [
"TrinketFeatureRendererVRMixin"
],
"minVersion": "0.8.4"
}
4 changes: 3 additions & 1 deletion fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"vivecraft.bedrockify.mixins.json",
"vivecraft.blur.mixins.json",
"vivecraft.cataclysm.mixins.json",
"vivecraft.curios.mixins.json",
"vivecraft.dynamicfps.mixins.json",
"vivecraft.emf.mixins.json",
"vivecraft.iris.mixins.json",
Expand All @@ -47,7 +48,8 @@
"vivecraft.rei.mixins.json",
"vivecraft.resolutioncontrol.mixins.json",
"vivecraft.sereneseasons.mixins.json",
"vivecraft.sodium.mixins.json"
"vivecraft.sodium.mixins.json",
"vivecraft.trinkets.mixins.json"
],
"depends": {
"fabricloader": ">=0.16.1",
Expand Down
1 change: 1 addition & 0 deletions forge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ loom {
mixinConfig "vivecraft.resolutioncontrol.mixins.json"
mixinConfig "vivecraft.sereneseasons.mixins.json"
mixinConfig "vivecraft.sodium.mixins.json"
mixinConfig "vivecraft.trinkets.mixins.json"
}
}

Expand Down
4 changes: 4 additions & 0 deletions neoforge/src/main/resources/META-INF/neoforge.mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ config = "vivecraft.blur.mixins.json"
[[mixins]]
config = "vivecraft.cataclysm.mixins.json"
[[mixins]]
config = "vivecraft.curios.mixins.json"
[[mixins]]
config = "vivecraft.dynamicfps.mixins.json"
[[mixins]]
config = "vivecraft.emf.mixins.json"
Expand All @@ -71,3 +73,5 @@ config = "vivecraft.resolutioncontrol.mixins.json"
config = "vivecraft.sereneseasons.mixins.json"
[[mixins]]
config = "vivecraft.sodium.mixins.json"
[[mixins]]
config = "vivecraft.trinkets.mixins.json"
4 changes: 4 additions & 0 deletions stubs/src/main/java/dev/emi/trinkets/api/SlotReference.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package dev.emi.trinkets.api;

public record SlotReference(TrinketInventory inventory, int index) {
}
7 changes: 7 additions & 0 deletions stubs/src/main/java/dev/emi/trinkets/api/SlotType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.emi.trinkets.api;

public class SlotType {
public String getGroup() {
return "";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.emi.trinkets.api;

public class TrinketInventory {
public SlotType getSlotType() {
return null;
}
}

0 comments on commit ad622bb

Please sign in to comment.