📷 Allows you to rotate your camera freely around your character!
https://modrinth.com/mod/freelook-oneconfig
freelook
freelook-mod
freelookmod
minecraft
oneconfig
perspective
perspectivemod
snaplook
snaplookmod
- Java 100%
|
awruff
0faba22c1a
- Now supports 26.2! - Mark fabric api dependency (oops) - Update icon |
||
|---|---|---|
| gradle/wrapper | migrate to stonecutter | |
| src/main | 2.1.0 beta 4 | |
| .gitignore | migrate to stonecutter | |
| build.gradle.kts | 2.1.0 beta 4 | |
| CHANGELOG.md | 2.1.0 beta 4 | |
| gradle.properties | 2.1.0 beta 2 | |
| gradlew | [1.21.5] Get started on modern port | |
| gradlew.bat | [1.21.5] Get started on modern port | |
| LICENSE | Initial Commit | |
| README.md | 2.1.0 beta 4 | |
| settings.gradle.kts | 2.1.0 beta 4 | |
| stonecutter.gradle.kts | 2.1.0 beta 4 | |
| stonecutter.properties.toml | 2.1.0 beta 4 | |
Freelook Mod
Allows you to rotate your camera freely around your character!
Features
- Multiple Camera Perspectives
- Customizable Activation Style
- Camera Cycle Integration
- Smooth Transitions
Server Opt-Opt
Some servers may consider freelook a competitive advantage. As of 2.0.0, Freelook includes a simple opt‐out protocol.
How it works
- When a player joins, the client sends a
freelook:handshakepacket. - If the server wants to disable freelook, it responds with a
freelook:disablepacket. - Then the player cannot use freelook for that session.
Click to expand code example
publicclass ExampleimplementsModInitializer{@OverridepublicvoidonInitialize(){PayloadTypeRegistry.clientboundPlay().register(DisableModPayload.TYPE,DisableModPayload.CODEC);PayloadTypeRegistry.serverboundPlay().register(HandshakePayload.TYPE,HandshakePayload.CODEC);ServerPlayNetworking.registerGlobalReceiver(HandshakePayload.TYPE,(payload,ctx)->ServerPlayNetworking.send(ctx.player(),newDisableModPayload()));}publicrecord DisableModPayload()implementsCustomPacketPayload{publicstaticfinalType<DisableModPayload>TYPE=newType<>(Identifier.parse("freelook:disable"));publicstaticfinalStreamCodec<RegistryFriendlyByteBuf,DisableModPayload>CODEC=StreamCodec.unit(newDisableModPayload());@OverridepublicType<?extendsCustomPacketPayload>type(){returnTYPE;}}publicrecord HandshakePayload()implementsCustomPacketPayload{publicstaticfinalType<HandshakePayload>TYPE=newType<>(Identifier.parse("freelook:handshake"));publicstaticfinalStreamCodec<RegistryFriendlyByteBuf,HandshakePayload>CODEC=StreamCodec.unit(newHandshakePayload());@OverridepublicType<?extendsCustomPacketPayload>type(){returnTYPE;}}}