自定义NPC脚本论坛

搜索
查看: 168|回复: 0

[1.12.2]爆炸弓

[复制链接]

1

主题

1

帖子

26

积分

Lv.2 流浪疾风

Rank: 3Rank: 3

积分
26
发表于 2021-8-13 20:04:16 | 显示全部楼层 |阅读模式
本帖最后由 NPC萌新 于 2021-8-13 20:05 编辑

废话不多说,水贴!!!
  1. function init(e){
  2. var npc = e.npc;
  3. function Listener(eventType,listener,bus){
  4. var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge");
  5. this.eventType=eventType;
  6. this.listener=listener;
  7. this.bus=(bus==null)?MinecraftForge.EVENT_BUS:bus;
  8. this.getEventType=function(){
  9.   return this.eventType;
  10. }
  11. this.getListener=function(){
  12.   return this.listener;
  13. }
  14. this.getBus=function(){
  15.   return this.bus;
  16. }
  17. }
  18. /**
  19. *EventListener listenEvent(String eventType,String priority,function listener)
  20. *-eventType:你要监听的事件的类路径 如net.minecraftforge.event.ServerChatEvent
  21. *-priority:你的事件优先级 从低到高LOWEST LOW NORMAL HIGH HIGHEST
  22. *-listener:事件方法
  23. *Return:
  24. *-EventListener:事件监听者
  25. *监听事件并返回监听对象
  26. */
  27. function listenEvent(eventType,priority,listener,bus){
  28. var Event=Java.type(eventType);
  29.      var IEventListener=Java.type("net.minecraftforge.fml.common.eventhandler.IEventListener");
  30.      var EventPriority=Java.type("net.minecraftforge.fml.common.eventhandler.EventPriority");
  31. var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge");
  32. var event=new Event();
  33.     if(priority=="LOW"){
  34.      priority=EventPriority.LOW;
  35.     }
  36.     if(priority=="HIGH"){
  37.      priority=EventPriority.HIGH;
  38.     }
  39.     if(priority=="NORMAL"){
  40.      priority=EventPriority.NORMAL;
  41.     }
  42.     if(priority=="LOWEST"){
  43.      priority=EventPriority.LOWEST;
  44.     }
  45.     if(priority=="HIGHEST"){
  46.      priority=EventPriority.HIGHEST;
  47.     }
  48. var EventListener=Java.extend(IEventListener,{
  49.   invoke:listener
  50. });
  51. listener=new EventListener();
  52. var bus=(bus==null)?MinecraftForge.EVENT_BUS:bus;
  53. var busID=bus.class.getDeclaredField("busID");
  54. busID.setAccessible(true);
  55. busID=busID.getInt(bus);
  56. event.getListenerList().register(busID,priority,listener);
  57. return new Listener(eventType,listener,bus);
  58. }
  59. /**
  60. *void unListenEvent(IEventListener listener)
  61. *-listener:事件方法
  62. *取消监听事件
  63. */
  64. function unListenEvent(eventType,listener,bus){
  65. var Event=Java.type(eventType);
  66. var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge");
  67. var event=new Event();
  68. var bus=(bus==null)?MinecraftForge.EVENT_BUS:bus;
  69. var busID=bus.class.getDeclaredField("busID");
  70. busID.setAccessible(true);
  71. busID=busID.getInt(bus);
  72. event.getListenerList().unregister(busID,listener);
  73. }
  74. /**
  75. *@Author Hueihuea
  76. *著作权属于Hueihuea 2019/6/16起生效
  77. */
  78. var HotNPC=Java.type("mchhui.hotnpc.HotNPC");
  79. var Tempdata=Java.type("mchhui.hotnpc.utlis.Tempdata");
  80. var tempdata=HotNPC.tempdata;
  81. var listeners;
  82. var listenerName=["abc"];
  83. var EntityPlayerMP=Java.type("net.minecraft.entity.player.EntityPlayerMP");
  84. if(!tempdata.has("listeners")){
  85. tempdata.set("listeners",new Tempdata())
  86. }
  87. listeners=tempdata.get("listeners");
  88. if(!listeners.has(listenerName[0])){
  89. listeners.set(listenerName[0],listenEvent("net.minecraftforge.event.entity.ProjectileImpactEvent.Arrow","LOWEST",
  90.     function(event){
  91.     try{
  92.     var ScriptEntity = Java.type("noppes.npcs.api.wrapper.EntityWrapper")
  93.       var entity = new ScriptEntity(event.arrow);
  94.       if(entity.getName() == "Arrow"){
  95.       entity.getWorld().explode(entity.getX(),entity.getY(),entity.getZ(),5,false,false);

  96.       }
  97.     }catch(e){npc.say(e)}
  98.     }
  99. ));
  100. npc.say("§arnm的弓箭!!!");
  101. }
  102. //unListenEvent(listeners.get(listenerName[0]).getEventType(),listeners.get(listenerName[0]).getListener());
  103. //listeners.remove(listenerName[0]);
  104. }
复制代码


评分

参与人数 1人气 +2 收起 理由
小明 + 2 原创奖励(请使用代码高亮)

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表