StreamCamera
StreamCamera Wiki
StreamCamera 是由 lmsdscav 独自开发完成的一个完全免费的 Minecraft: Java Edition 的 Bukkit 插件。
本插件主要用于方便直播,相关设置还需要自己摸索!
本插件不是直播插件,只是一个可以辅助直播的监控插件!你需要打开一个客户端,将客户端设为相机玩家,然后用直播软件把客户端画面推流到直播间!
请注意!焦点玩家和相机玩家都存在时,相机玩家的背包会被设定成和相机玩家相同的背包,请自行避免焦点玩家的恶意操作导致的例如ItemBan不必要麻烦!!!
相机玩家:Camera Player
相机玩家的游戏画面是在直播中展现的画面。您需要将正在直播的客户端所使用的账户设置为相机玩家。
指令: /actcamera <PlayerName>,这个指令中的PlayerName指相机玩家的账户名。
在执行这个指令后,相机玩家会变为旁观模式,且除非相机玩家客户端手动切换,否则永久不变。(请不要在相机玩家未清空的情况下更改模式,否则会出bug,这个bug完全是自己作的,不给修)
此时,假定相机玩家名为Notch,指令是:/actcamera Notch
现在,相机玩家已经设置完成,需要注意的是,如果相机玩家客户端需要放入后台,请使用 F3 + P 来 关闭 失去焦点时暂停 功能
相机玩家的现存问题和相比原版旁观者的优劣势。
现存问题是,每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,插件会在剩余的玩家里选择随机一个作为画面,如果没有人了,将会没有焦点画面。
无人值守设定
死设定!当焦点玩家掉线,RemotePlayer会变为null,此时没有焦点玩家(Focus Player),若当前服务器除相机玩家外有玩家,会随机选取其一,否则相机玩家不受控。当焦点玩家为null,即没有焦点玩家时,下一个进来的玩家会自动被设置为焦点!
