StreamCamera:修订间差异

来自lxStd Wiki
无编辑摘要
无编辑摘要
第5行: 第5行:


(待解决的Bug: 玩家打开背包或工作台,关闭时没有做检测,即chestOpen的指在关闭中没有做判断,导致SC.CP.closeInventory() (即使SC.RP没有打开。))
(待解决的Bug: 玩家打开背包或工作台,关闭时没有做检测,即chestOpen的指在关闭中没有做判断,导致SC.CP.closeInventory() (即使SC.RP没有打开。))
(待解决的Bug:仍然存在的超速率问题,也是因为Inventory.)
(待解决的Bug:村民Inventory打开也会出问题)


==== 相机玩家:Camera Player ====
==== 相机玩家:Camera Player ====

2023年8月16日 (三) 22:07的版本

StreamCamera Wiki

StreamCamera 是由 lmsdscav 独自开发完成的一个完全免费的 Minecraft: Java Edition 的 Bukkit 插件。

本插件主要用于方便直播,相关设置还需要自己摸索!

(待解决的Bug: 玩家打开背包或工作台,关闭时没有做检测,即chestOpen的指在关闭中没有做判断,导致SC.CP.closeInventory() (即使SC.RP没有打开。))

(待解决的Bug:仍然存在的超速率问题,也是因为Inventory.)

(待解决的Bug:村民Inventory打开也会出问题)

相机玩家:Camera Player

相机玩家的游戏画面是在直播中展现的画面。您需要将正在直播的客户端所使用的账户设置为相机玩家。

指令: /actcamera <PlayerName>,这个指令中的PlayerName指相机玩家的账户名。

在执行这个指令后,会显示Set. Now, <PlayerName> is the camera.,然后相机玩家会变为旁观模式,且除非相机玩家客户端手动切换,否则永久不变。

此时,假定相机玩家名为Notch,指令是:/actcamera Notch,返回是:Set. Now, Notch is the camera.

现在,相机玩家已经设置完成,需要注意的是,直播端的Minecraft客户端不应当放在系统后台或打开任何GUI,否则当焦点玩家 (Focus Player)切换世界时,直播客户端会返回到暂停页面,影响直播。因此不要使用本机后台直播。

相机玩家的现存问题和相比原版旁观者的优劣势。

现存问题是,每3秒有极小几率出现可察觉性的旁观闪烁问题,造成原因是焦点玩家 (Focus Player)对于相机玩家,在无旁观时可见,但为了解决原版问题,需要每3秒瞬间刷新旁观。该问题可能与延时有关系,但发生几率极低,也许一万个3秒内出现1次,1次持续时间只会在一瞬间。

相比原版,服主不需要设置配置,不需要设置让旁观者刷新地形。其次,原版旁观者会在玩家传送后发生幽灵旁观事件,但本插件对其有解决。

焦点玩家

当焦点玩家不存在(RemotePlayer = null)时,相机玩家位置不会被插件更改,当焦点玩家存在时,插件会让相机玩家同步焦点玩家的位置。可以操作相机玩家的人称视角,但是不能移动位置(直到失去焦点玩家或不再是相机玩家)。

设置焦点玩家的方法是指令:/setfocus <PlayerName>,其中PlayerName指目标的焦点玩家账户名。

注意!普遍情况下,/setfocus指令不应该开放给普通玩家,因为该指令可以直接设置焦点玩家!可能出现玩家抢夺镜头的情况。

为什么无人值守?因为当玩家进入服务器后,如果焦点玩家不存在(RemotePlayer = null),玩家可以直接设置某人为焦点玩家!

方法:/focuscam <PlayerName>,其中PlayerName指目标的焦点玩家账户名。当设置焦点玩家后,该指令不再可用,当使用时,会有对应提示。

此时,如果焦点玩家需要移交镜头焦点,使用指令:/migratecam <PlayerName>,其中,其中PlayerName指目标的焦点玩家账户名。该指令只能由当前焦点玩家执行,非焦点玩家执行不会被授权。

之所以FocusCam的指令/focuscam允许将初始焦点设置到其他玩家,是保留灵活性,确保在初始状态(RemotePlayer = Null)下,普通玩家可以给另一玩家设置初始焦点以达到“帮助”的目的。

焦点投票选择

补充:注意!投票超时时间是10秒,即10000毫秒,这是无法从配置文件修改的。

该选择方式由于投票人数无法固定,因此方案是10秒内同意人数达到一定数量后设置焦点,默认值为2,即同意玩家需要两个,值得注意的是,投票发起者默认不算投票,但仍然可以自己给自己投。(每个玩家只能投票一次)

默认值为2人,即同意人数达到2人即可切换焦点玩家。投票选择功能是焦点玩家不能操作的,一旦超过指定人数,原焦点玩家将会失去焦点。

投票发起通常所有玩家都应当拥有权限,指令为:/votefocus <PlayerName>,其中PlayerName是投票通过后会被应用的焦点玩家。

投票只有同意票,拒绝票不支持,且未来不会额外开发。(说起来,一个数字,同意的人加,拒绝的人减,这种算法是很奇怪的)。

同意投票指令:/agreevote同样,该指令也应该对所有玩家开放

要修改投票通过人数,请在插件的配置文件夹中修改,文件夹名为StreamCamera,配置文件是config.yml

初始文件内容是VoteApplyCount: 2,其中VoteApplyCount就是通过人数。当发起投票后,使用了/agreevote指令的人数达到该值,焦点玩家就会被设置。例如,当值为x时,第x个玩家执行/agreevote后,焦点玩家被设置。

如果要禁用投票,直接关闭权限即可,权限节点在后面会有提及。

额外功能

查看概况

当相机玩家和焦点玩家都存在时,使用/seefocus指令可以显示相机玩家和焦点玩家,但如果其中有一个不存在,则两者都不显示

查看投票

使用指令/seevote会显示投票是否超时,以及投票希望设置的焦点玩家,但不会显示投票发起者。

关闭相机和聚焦

使用指令/shutcam可以关闭重置相机玩家和焦点玩家 (设置为null)

配置文件热重载

使用指令/camreload可以热重载配置文件,热更新投票的通过人数。在已有投票时更新同样会对现有生效,即使投票时间只有短短的、不可修改的10秒。

权限组

streamcamera
streamcamera.actcamera: 指令/actcamera

通常地,这个权限不应该开放给普通玩家。因为指令会改变相机玩家

streamcamera.admin.setfocus: 指令/setfocus

通常地,这个权限不应该开放给普通玩家。因为指令可以随意切换焦点

streamcamera.agreevote: 指令/agreevote

通常地,这个权限可选开放给普通玩家,这是投票的同意功能所需权限

streamcamera.camreload: 指令/camreload

通常地,这个权限不应该开放给普通玩家。因为指令可以随意重载配置,被滥用可能影响服务器性能

streamcamera.focuscam: 指令/focuscam

通常地,这个权限应该开放给普通玩家,在没有焦点玩家时,玩家可以通过这个指令直接更改焦点而不是投票

streamcamera.migrate: 指令/migratecam

通常地,这个权限应该开放给普通玩家,焦点玩家需要通过这个指令移交镜头焦点

streamcamera.seefocus: 指令/seefocus

通常地,这个权限应该开放给普通玩家,这样,玩家就可以查看到当前焦点玩家的名字了

streamcamera.seevote: 指令/seevote

通常地,这个权限应该开放给普通玩家,这样,玩家就可以查看最新一次的投票信息了

streamcamera.shutcam: 指令/shutcam

通常地,这个权限不应该开放给普通玩家。因为指令可以重置相机和焦点。

streamcamera.votefocus: 指令/votefocus

通常地,这个权限可选开放给普通玩家,以此,玩家就可以发起投票

常见问题

如果相机玩家或焦点玩家掉线了会怎样

当焦点玩家掉线,RemotePlayer会变为null,此时没有焦点玩家(Focus Player),若当前服务器除相机玩家外有玩家,会随机选取其一,否则相机玩家不受控。

当相机玩家掉线,CameraPlayer会变为null,此时插件不会做任何事情,直到下一次的/actcamera <PlayerName>的有效设置。

无人值守设定

死设定!当焦点玩家掉线,RemotePlayer会变为null,此时没有焦点玩家(Focus Player),若当前服务器除相机玩家外有玩家,会随机选取其一,否则相机玩家不受控。当焦点玩家为null,即没有焦点玩家时,下一个进来的玩家会自动被设置为焦点!