
自由视角
允许你自由地将摄像机围绕角色旋转!
查看大图自由视角模组(Freelook Mod)
允许你围绕角色自由旋转摄像机!
功能特性
- 多种摄像机视角
- 可自定义的触发方式
- 摄像机循环集成
- 平滑过渡效果
服务器选择退出机制(Server Opt-Out)
部分服务器可能认为自由视角属于不公平竞技优势。从 2.0.0 版本起,Freelook 包含一个简单的选择退出协议。
工作原理
- 当玩家加入时,客户端发送一个
freelook:handshake数据包。 - 如果服务器想要禁用自由视角,它会响应一个
freelook:disable数据包。 - 之后该玩家在当前回话中将无法使用自由视角。
点击展开代码示例
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;
}
}
}
代码基于 LGPL 3.0 协议许可。
正在加载版本记录…



正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。