等枫亭丶烟雨阁
本帖最后由 等枫亭丶烟雨阁 于 2022-3-24 21:31 编辑

如图,请问如何在玩家拥有耳聋效果时将右下角的原版声音提示频闭


——如需更改mod内容请下载附件内的mod而非用官网下载的mod,因为这个mod已经做过一些魔改如果用官网mod调整会导致我无法保留之前的魔改

无敌三脚猫
本帖最后由 无敌三脚猫 于 2022-3-25 15:53 编辑

本来cnpc自带的事件以及拓展的forge事件都只限于服务端的事件,但注册一个客户端事件也是可以监听到的,有一次我试着注册了客户端的播放声音事件(和我下面写的这个不是同一个事件),结果在我退出存档之后,脚本甚至还能监听到我点击菜单发出的声音cnpc真是太强啦~
这个耳聋buff在最后几秒会逐渐恢复声音,所以我的写法是在最后四秒的时候恢复声音提示
下面这串代码,你把它写到上次的脚本下面
  1. var minecraft=Java.type("net.minecraft.client.Minecraft")
  2. var deafened=Java.type("com.mrcrayfish.guns.init.ModEffects").DEAFENED.get()
  3. listenEvent("net.minecraftforge.client.event.RenderGameOverlayEvent.Pre",function(event){
  4. if(event.getType().ordinal()==19)
  5. if(minecraft.func_71410_x().field_71439_g!=null){
  6. var effect=minecraft.func_71410_x().field_71439_g.func_70660_b(deafened)
  7. if(effect!=null)
  8. if(effect.func_76459_b()>80)
  9. event.setCanceled(true)
  10. }
  11. })
复制代码
唔,不过我不确定这么写在多人模式是否有效,你可以试试,尤其是要试试写完脚本,重启服务器,再进服看看是否有效

等枫亭丶烟雨阁
无敌三脚猫 发表于 2022-3-25 15:51
本来cnpc自带的事件以及拓展的forge事件都只限于服务端的事件,但注册一个客户端事件也是可以监听到的,有 ...

额一定要放到上次那个下面吗,考不考虑搞成一个单独的脚本

无敌三脚猫
等枫亭丶烟雨阁 发表于 2022-3-25 16:12
额一定要放到上次那个下面吗,考不考虑搞成一个单独的脚本
  1. var IEventListener=Java.type("net.minecraftforge.eventbus.api.IEventListener")
  2. var EventPriority=Java.type("net.minecraftforge.eventbus.api.EventPriority")
  3. var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge")
  4. var minecraft=Java.type("net.minecraft.client.Minecraft")
  5. var deafened=Java.type("com.mrcrayfish.guns.init.ModEffects").DEAFENED.get()
  6. function listenEvent(eventType,listener){
  7. var Event=Java.type(eventType)
  8. var event=new Event()
  9. var EventListener=Java.extend(IEventListener,{
  10.   invoke:listener
  11. })
  12. listener=new EventListener();
  13. var busID=MinecraftForge.EVENT_BUS.class.getDeclaredField("busID");
  14. busID.setAccessible(true);
  15. busID=busID.getInt(MinecraftForge.EVENT_BUS);
  16. event.getListenerList().register(busID,EventPriority.HIGH,listener);
  17. }
  18. listenEvent("net.minecraftforge.client.event.RenderGameOverlayEvent.Pre",function(event){
  19. if(event.getType().ordinal()==19)
  20. if(minecraft.func_71410_x().field_71439_g!=null){
  21. var effect=minecraft.func_71410_x().field_71439_g.func_70660_b(deafened)
  22. if(effect!=null)
  23. if(effect.func_76459_b()>80)
  24. event.setCanceled(true)
  25. }
  26. })
复制代码

等枫亭丶烟雨阁

加入并重启后出现了这样一句话

ForgeScript script errored

并且经过实测并没有频闭右下角原版自带的声音文字提示功能

第一页 上一页 下一页 最后一页