本帖最后由 等枫亭丶烟雨阁 于 2022-3-24 21:31 编辑
如图,请问如何在玩家拥有耳聋效果时将右下角的原版声音提示频闭
——如需更改mod内容请下载附件内的mod而非用官网下载的mod,因为这个mod已经做过一些魔改如果用官网mod调整会导致我无法保留之前的魔改
如图,请问如何在玩家拥有耳聋效果时将右下角的原版声音提示频闭
——如需更改mod内容请下载附件内的mod而非用官网下载的mod,因为这个mod已经做过一些魔改如果用官网mod调整会导致我无法保留之前的魔改
本帖最后由 无敌三脚猫 于 2022-3-25 15:53 编辑
本来cnpc自带的事件以及拓展的forge事件都只限于服务端的事件,但注册一个客户端事件也是可以监听到的,有一次我试着注册了客户端的播放声音事件(和我下面写的这个不是同一个事件),结果在我退出存档之后,脚本甚至还能监听到我点击菜单发出的声音
cnpc真是太强啦~
这个耳聋buff在最后几秒会逐渐恢复声音,所以我的写法是在最后四秒的时候恢复声音提示
下面这串代码,你把它写到上次的脚本下面复制代码唔,不过我不确定这么写在多人模式是否有效,你可以试试,尤其是要试试写完脚本,重启服务器,再进服看看是否有效
本来cnpc自带的事件以及拓展的forge事件都只限于服务端的事件,但注册一个客户端事件也是可以监听到的,有一次我试着注册了客户端的播放声音事件(和我下面写的这个不是同一个事件),结果在我退出存档之后,脚本甚至还能监听到我点击菜单发出的声音

这个耳聋buff在最后几秒会逐渐恢复声音,所以我的写法是在最后四秒的时候恢复声音提示
下面这串代码,你把它写到上次的脚本下面
- var minecraft=Java.type("net.minecraft.client.Minecraft")
- var deafened=Java.type("com.mrcrayfish.guns.init.ModEffects").DEAFENED.get()
- listenEvent("net.minecraftforge.client.event.RenderGameOverlayEvent.Pre",function(event){
- if(event.getType().ordinal()==19)
- if(minecraft.func_71410_x().field_71439_g!=null){
- var effect=minecraft.func_71410_x().field_71439_g.func_70660_b(deafened)
- if(effect!=null)
- if(effect.func_76459_b()>80)
- event.setCanceled(true)
- }
- })
无敌三脚猫 发表于 2022-3-25 15:51
本来cnpc自带的事件以及拓展的forge事件都只限于服务端的事件,但注册一个客户端事件也是可以监听到的,有 ...
额一定要放到上次那个下面吗,考不考虑搞成一个单独的脚本
等枫亭丶烟雨阁 发表于 2022-3-25 16:12
额一定要放到上次那个下面吗,考不考虑搞成一个单独的脚本
- var IEventListener=Java.type("net.minecraftforge.eventbus.api.IEventListener")
- var EventPriority=Java.type("net.minecraftforge.eventbus.api.EventPriority")
- var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge")
- var minecraft=Java.type("net.minecraft.client.Minecraft")
- var deafened=Java.type("com.mrcrayfish.guns.init.ModEffects").DEAFENED.get()
- function listenEvent(eventType,listener){
- var Event=Java.type(eventType)
- var event=new Event()
- var EventListener=Java.extend(IEventListener,{
- invoke:listener
- })
- listener=new EventListener();
- var busID=MinecraftForge.EVENT_BUS.class.getDeclaredField("busID");
- busID.setAccessible(true);
- busID=busID.getInt(MinecraftForge.EVENT_BUS);
- event.getListenerList().register(busID,EventPriority.HIGH,listener);
- }
- listenEvent("net.minecraftforge.client.event.RenderGameOverlayEvent.Pre",function(event){
- if(event.getType().ordinal()==19)
- if(minecraft.func_71410_x().field_71439_g!=null){
- var effect=minecraft.func_71410_x().field_71439_g.func_70660_b(deafened)
- if(effect!=null)
- if(effect.func_76459_b()>80)
- event.setCanceled(true)
- }
- })
等枫亭丶烟雨阁 发表于 2022-3-25 19:29
加入并重启后出现了这样一句话
ForgeScript script errored
看来只在单人有效
真是可惜啊,如果cnpc在服务器不能影响客户端,那就只好加别的mod,或者改mod了,而且这往往意味着——玩家可以不加这个mod依然进入服务器,然后不受影响
