MCPcopy Index your code
hub / github.com/Exopandora/ShoulderSurfing

github.com/Exopandora/ShoulderSurfing @26.2-5.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 26.2-5.0.0 ↗ · + Follow
1,033 symbols 2,671 edges 187 files 16 documented · 2% updated 8d ago★ 16714 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Shoulder Surfing Reloaded

CurseForge Downloads Modrinth Downloads GitHub License

Shoulder Surfing Reloaded is a highly configurable third person camera mod for Minecraft.

Features

  • Over-the-shoulder camera - see what you are interacting with in 3rd person
  • Decoupled camera - walk left and right without turning your mouse
  • Free look (default: left alt) - keep walking in a direction while looking in a different one
  • Hotkeys to move the camera (default: arrow keys, page up and page down, u to switch shoulders)
  • Corrective cross-hair positioning when using adaptive or dynamic crosshair
  • Adaptive player transparency - fades the player model to transparent when view is obstructed
  • Highly configurable - customize your 3rd person experience with many configuration options
  • Client side only - no server mods required
  • Plugin API - implement custom camera behaviors and compatibility features with ease

Please note that this mod modifies the camera position and player movement, which can be an issue for servers with strict anti-cheat. Use at your own risk!

Installation

Download Shoulder Surfing Reloaded from CurseForge or Modrinth or build from source.

Forge

Prerequisites

  1. Make sure Minecraft Forge is installed
  2. Make sure Forge Config API Port (CurseForge, Modrinth) is installed

Manual

  1. Navigate to .minecraft/mods
  2. Move ShoulderSurfing-Forge-[VERSION].jar into the folder
  3. Follow the steps below

Launcher Settings

  1. Select Forge as your profile
  2. Launch Minecraft
  3. Join a world or server
  4. Use arrow keys, page up and page down to adjust the perspective, u to switch shoulders

Fabric

Prerequisites

  1. Make sure Fabric is installed
  2. Make sure Fabric API (CurseForge, Modrinth) is installed
  3. Make sure Forge Config API Port (CurseForge, Modrinth) is installed

Manual

  1. Navigate to .minecraft/mods
  2. Move ShoulderSurfing-Fabric-[VERSION].jar into the folder
  3. Follow the steps below

Launcher Settings

  1. Select Fabric as your profile
  2. Launch Minecraft
  3. Join a world or server
  4. Use arrow keys, page up and page down to adjust the perspective, z to switch shoulders

NeoForge

Prerequisites

  1. Make sure NeoForge is installed

Manual

  1. Navigate to .minecraft/mods
  2. Move ShoulderSurfing-NeoForge-[VERSION].jar into the folder
  3. Follow the steps below

Launcher Settings

  1. Select NeoForge as your profile
  2. Launch Minecraft
  3. Join a world or server
  4. Use arrow keys, page up and page down to adjust the perspective, o to switch shoulders

Configuration

≥ 1.21: Ingame: Mods → ShoulderSurfing → Config (Manual: .minecraft/config/shouldersurfing-client.cfg)
≤ 1.20: Install Forge Config Screens (CurseForge, Modrinth) (Manual: .minecraft/config/shouldersurfing-client.cfg)

Version 2.9.7 and older

≥ 1.13: Manual: .minecraft/config/shouldersurfing.toml
≤ 1.12: Ingame: Mods → ShoulderSurfing → Config (Manual: .minecraft/config/shouldersurfing.cfg)

Plugin API

Shoulder Surfing Reloaded features a plugin API for third party mod developers. This allows for implementing custom camera behaviors and compatibility features without the use of invasive mixins. The documentation can be found in the wiki. It explains step by step on how to create and register your own plugin, and how you can implement and register custom event handlers.

Building From Source

Clone the repository and run the following command in the root directory of this repository:

gradlew build

The binaries for each platform can be found in the following directories:

Platform Path
Forge ShoulderSurfing/forge/build/libs
Fabric ShoulderSurfing/fabric/build/libs
NeoForge ShoulderSurfing/neoforge/build/libs

FAQ

Q: Why is the player not looking at the position of the crosshair when holding item x?
A: This needs to be configured using the config options adaptive_crosshair_hold_items or adaptive_crosshair_use_items.

Q: Why is the player not rendered correctly when using shader pack x?
A: This is caused by the transparent player rendering of Shoulder Surfing Reloaded. Either disable them in the config (adjust_transparency) and restart your game or report this to the authors of the shader pack.

Q: Why are parts of the player armor or clothing not fading to transparent when the player model does?
A: Transparent rendering needs to be supported by each individual model. Please report this to the author of the respective mod that adds the respective armor or clothing item.

Q: Why does block x or entity y not render behind the transparent player model?
A: Make sure you have enabled "Improved Transparency" (or "Fabulous!" in older versions) in the graphics settings. Everything that is still not visible after enabling the setting is a limitation of vanilla Minecraft.

Q: Can you port feature x to version y?
A: No.

Q: Can you port this to quilt, liteloader, rift, etc.?
A: No.

Q: Can I add this to my mod pack?
A: Yes.

Compatibility

Builtin compatibility*

  • Cobblemon
  • Create
  • Create-Fly
  • Curios
  • Neat
  • TslatEntityStatus
  • Wildfire Gender

Incompatible mods*

  • Better Third Person
  • Camera Utils
  • Feather Client
  • Nimble
  • Valkyrien Skies
  • YDM's Custom Camera View

Minor incompatibility issues*

  • Clutter (hats do not render transparent)
  • Epic Fight (player does not render transparent in battle mode, player keeps punching in the same direction)
  • EssentialClient (player look script hooks do not work)
  • Inmis (backpack does not render transparent)
  • Iris (view bobbing cannot be forced on)
  • MrCrayfish's Gun Mod (crosshair does not render when using ads, fov does not update when using ads)
  • Tweakeroo (freecam movement)
  • YDM's Weapon Master (weapons do not render transparent)

Third-party integrations*

These are community-made mods that add optional support for this mod. They are not officially supported and may not be compatible with all versions.

* Mods are listed A-Z.

License

MIT License, Original project by Sabar: Minecraft Forum, GitHub

Extension points exported contracts — how you extend this code

ComputeTargetCameraOffsetEventHandler (Interface)
(no doc) [8 implementers]
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/event/handler/ComputeTargetCameraOffsetEventHandler.java
IPlatform (Interface)
(no doc) [6 implementers]
common/src/main/java/com/github/exopandora/shouldersurfing/IPlatform.java
ComputeCameraEntityTransparencyEventHandler (Interface)
(no doc) [4 implementers]
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/event/handler/ComputeCameraEntityTransparencyEventHandler.java
CameraDuck (Interface)
(no doc) [4 implementers]
common/src/main/java/com/github/exopandora/shouldersurfing/mixinduck/CameraDuck.java
IShoulderSurfingPlugin (Interface)
(no doc) [4 implementers]
api/src/main/java/com/github/exopandora/shouldersurfing/api/plugin/IShoulderSurfingPlugin.java
OptionsDuck (Interface)
(no doc) [2 implementers]
common/src/main/java/com/github/exopandora/shouldersurfing/mixinduck/OptionsDuck.java
ComputePlayerUseItemStateEventHandler (Interface)
(no doc) [3 implementers]
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/event/handler/ComputePlayerUseItemStateEventHandler.java
ICuriosEventHandler (Interface)
(no doc) [1 implementers]
common/src/main/java/com/github/exopandora/shouldersurfing/compat/curios/event/handler/ICuriosEventHandler.java

Core symbols most depended-on inside this repo

getInstance
called by 121
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/IShoulderSurfing.java
register
called by 81
api/src/main/java/com/github/exopandora/shouldersurfing/api/event/IEventBus.java
isShoulderSurfing
called by 47
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/IShoulderSurfing.java
getCameraEntity
called by 47
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/event/ComputePlayerPickStateEvent.java
getInstance
called by 47
common/src/main/java/com/github/exopandora/shouldersurfing/client/ShoulderSurfing.java
add
called by 42
common/src/main/java/com/github/exopandora/shouldersurfing/event/HandlerList.java
getCameraConfig
called by 39
api/src/main/java/com/github/exopandora/shouldersurfing/api/config/IClientConfig.java
setResult
called by 32
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/event/SetupCameraRotationEvent.java

Shape

Method 829
Class 125
Enum 39
Interface 39
Function 1

Languages

Java100%
Kotlin1%

Modules by API surface

common/src/main/java/com/github/exopandora/shouldersurfing/config/CameraConfig.java81 symbols
api/src/main/java/com/github/exopandora/shouldersurfing/api/config/ICameraConfig.java80 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/client/event/handler/ComputeTargetCameraOffsetEventHandlerImpl.java41 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/client/ShoulderSurfing.java35 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/client/ShoulderSurfingCamera.java28 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/client/renderer/CrosshairRenderer.java22 symbols
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/world/phys/PickContext.java22 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/config/Config.java19 symbols
api/src/main/java/com/github/exopandora/shouldersurfing/api/client/IShoulderSurfing.java18 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/config/CrosshairConfig.java16 symbols
common/src/main/java/com/github/exopandora/shouldersurfing/config/PlayerConfig.java15 symbols
api/src/main/java/com/github/exopandora/shouldersurfing/api/math/Vec2f.java15 symbols

For agents

$ claude mcp add ShoulderSurfing \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page