Clean repo for open source release
Remove build artifacts, dev tool configs, unused dependencies, and third-party source dumps. Add proper README, update .gitignore, clean up Makefile.
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package com.tiedup.remake.mixin.client;
|
||||
|
||||
import com.tiedup.remake.items.base.ItemBind;
|
||||
import com.tiedup.remake.v2.BodyRegionV2;
|
||||
import com.tiedup.remake.items.base.PoseType;
|
||||
import com.tiedup.remake.state.HumanChairHelper;
|
||||
import com.tiedup.remake.state.PlayerBindState;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
/**
|
||||
* Mixin for Camera to lower first-person view when in DOG pose.
|
||||
*
|
||||
* In DOG pose, the player model is horizontal (like a dog), so the camera
|
||||
* should be lowered to match the eye level being closer to the ground.
|
||||
* Normal eye height is ~1.62 blocks, we lower it by ~0.6 blocks.
|
||||
*/
|
||||
@Mixin(Camera.class)
|
||||
public abstract class MixinCamera {
|
||||
|
||||
@Shadow
|
||||
private Vec3 position;
|
||||
|
||||
@Shadow
|
||||
protected abstract void setPosition(Vec3 pos);
|
||||
|
||||
@Inject(method = "setup", at = @At("TAIL"))
|
||||
private void tiedup$lowerCameraForDogPose(
|
||||
BlockGetter level,
|
||||
Entity entity,
|
||||
boolean detached,
|
||||
boolean thirdPersonReverse,
|
||||
float partialTick,
|
||||
CallbackInfo ci
|
||||
) {
|
||||
// Only affect first-person view
|
||||
if (detached) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(entity instanceof Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerBindState state = PlayerBindState.getInstance(player);
|
||||
if (state == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack bind = state.getEquipment(BodyRegionV2.ARMS);
|
||||
if (bind.isEmpty() || !(bind.getItem() instanceof ItemBind itemBind)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (itemBind.getPoseType() != PoseType.DOG) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Lower camera by 0.6 blocks to match the horizontal body position
|
||||
// Normal eye height is ~1.62, DOG pose should be around ~1.0
|
||||
setPosition(position.add(0, -0.6, 0));
|
||||
|
||||
// Human chair: move camera forward into the head
|
||||
if (HumanChairHelper.isActive(bind)) {
|
||||
float facing = HumanChairHelper.getFacing(bind);
|
||||
float facingRad = (float) Math.toRadians(facing);
|
||||
double fwdX = -Math.sin(facingRad) * 0.6;
|
||||
double fwdZ = Math.cos(facingRad) * 0.6;
|
||||
setPosition(position.add(fwdX, 0, fwdZ));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user