Перейти к содержимому
Mineforgian

Freelook

Allows you to rotate your camera freely around your character!

Загрузки
94K
Подписчики
20
Обновлён
19 июня 2026 г.
Лицензия
LGPL-3.0-only

Опубликован 6 августа 2024 г.

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

  1. When a player joins, the client sends a freelook:handshake packet.
  2. If the server wants to disable freelook, it responds with a freelook:disable packet.
  3. Then the player cannot use freelook for that session.
Click to expand code example
public class Example implements ModInitializer {
    @Override
    public void onInitialize() {
        PayloadTypeRegistry.clientboundPlay().register(DisableModPayload.TYPE, DisableModPayload.CODEC);
        PayloadTypeRegistry.serverboundPlay().register(HandshakePayload.TYPE, HandshakePayload.CODEC);

        ServerPlayNetworking.registerGlobalReceiver(HandshakePayload.TYPE,
                (payload, ctx) -> ServerPlayNetworking.send(ctx.player(), new DisableModPayload())
        );
    }

    public record DisableModPayload() implements CustomPacketPayload {
        public static final Type<DisableModPayload> TYPE = new Type<>(Identifier.parse("freelook:disable"));
        public static final StreamCodec<RegistryFriendlyByteBuf,  DisableModPayload> CODEC = StreamCodec.unit(new DisableModPayload());

        @Override
        public Type<? extends CustomPacketPayload> type() {
            return TYPE;
        }
    }

    public record HandshakePayload() implements CustomPacketPayload {
        public static final Type<HandshakePayload> TYPE = new Type<>(Identifier.parse("freelook:handshake"));
        public static final StreamCodec<RegistryFriendlyByteBuf, HandshakePayload> CODEC = StreamCodec.unit(new HandshakePayload());

        @Override
        public Type<? extends CustomPacketPayload> type() {
            return TYPE;
        }
    }
}

Code licensed under LGPL 3.0.

Ченджлог

2.1.0-beta.4+mc26.2Бета26.2 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc26.1Бета26.1, 26.1.1, 26.1.2 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc1.21.11Бета1.21.11 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc1.21.10Бета1.21.10 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc1.21.8Бета1.21.8 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc1.21.5Бета1.21.5 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc1.21.4Бета1.21.4 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon
2.1.0-beta.4+mc1.21.1Бета1.21.1 · 19 июня 2026 г.

2.1.0 beta 4

  • Now supports 26.2!
  • Mark fabric api dependency (oops)
  • Update icon

Комментарии

Загружаем…