切换风格

默认晚霞 雪山 粉色心情 伦敦 花卉 绿野仙踪 加州 白云 星空 薰衣草 城市 简约黑色 龙珠
回复 1

16

主题

52

帖子

382

积分

注册会员

Rank: 2

积分
382
人气
7 点
钻石粒
328 粒
贡献
0 点
论坛币
73 个
爱心
0 点

论坛注册会员

[1.7.10][ECMA]实用的防爆(网易1块钱)[复制链接]
发表于 2020-3-4 10:20:33 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 1.0.0
适用版本: 1.7.10 
编写语言: ECMA
最后更新: 2020-03-03
代码版权: 强版权

请注册论坛会员,已便查看高清图片!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 万年萌新小浩 于 2020-3-4 14:05 编辑

我来发脚本了(水贴)废话不多说,直接上代码


function Listener(eventType, listener, bus) {
 var MinecraftForge = Java.type("net.minecraftforge.common.MinecraftForge");
 this.eventType = eventType;
 this.listener = listener;
 this.bus = (bus == null) ? MinecraftForge.EVENT_BUS : bus;
 this.getEventType = function () {
  return this.eventType;
 }
 this.getListener = function () {
  return this.listener;
 }
 this.getBus = function () {
  return this.bus;
 }
}
/**
 *EventListener listenEvent(String eventType,String priority,function listener)
 *-eventType:你要监听的事件的类路径 如net.minecraftforge.event.ServerChatEvent
 *-priority:你的事件优先级 从低到高LOWEST LOW NORMAL HIGH HIGHEST
 *-listener:事件方法
 *Return:
 *-EventListener:事件监听者
 *监听事件并返回监听对象
 */
function listenEvent(eventType, priority, listener, bus) {
 var Event = Java.type(eventType);
 try {
  var IEventListener = Java.type("net.minecraftforge.fml.common.eventhandler.IEventListener");
  var EventPriority = Java.type("net.minecraftforge.fml.common.eventhandler.EventPriority");
 } catch (err) {
  var IEventListener = Java.type("cpw.mods.fml.common.eventhandler.IEventListener");
  var EventPriority = Java.type("cpw.mods.fml.common.eventhandler.EventPriority");
 }
 var MinecraftForge = Java.type("net.minecraftforge.common.MinecraftForge");
 var event = new Event();
 if (priority == "LOW") {
  priority = EventPriority.LOW;
 }
 if (priority == "HIGH") {
  priority = EventPriority.HIGH;
 }
 if (priority == "NORMAL") {
  priority = EventPriority.NORMAL;
 }
 if (priority == "LOWEST") {
  priority = EventPriority.LOWEST;
 }
 if (priority == "HIGHEST") {
  priority = EventPriority.HIGHEST;
 }
 var EventListener = Java.extend(IEventListener, {
   invoke: listener
  });
 listener = new EventListener();
 var bus = (bus == null) ? MinecraftForge.EVENT_BUS : bus;
 var busID = bus.class.getDeclaredField("busID");
 busID.setAccessible(true);
 busID = busID.getInt(bus);
 event.getListenerList().register(busID, priority, listener);
 return new Listener(eventType, listener, bus);
}
/**
 *void unListenEvent(IEventListener listener)
 *-listener:事件方法
 *取消监听事件
 */
function unListenEvent(eventType, listener, bus) {
 var Event = Java.type(eventType);
 var MinecraftForge = Java.type("net.minecraftforge.common.MinecraftForge");
 var event = new Event();
 var bus = (bus == null) ? MinecraftForge.EVENT_BUS : bus;
 var busID = bus.class.getDeclaredField("busID");
 busID.setAccessible(true);
 busID = busID.getInt(bus);
 event.getListenerList().unregister(busID, listener);
}
/**
 [url=mailto:*@Author]*@Author[/url] Hueihuea
 *著作权属于Hueihuea 2019/6/16起生效
*/
function getScriptEntity(entity){
 var ScriptController=Java.type("noppes.npcs.controllers.ScriptController");
 if(entity==null){
  return null;
 }
 return ScriptController.Instance.getScriptForEntity(entity);
}
var HotNPC = Java.type("mchhui.hotnpc.HotNPC");
var Tempdata = Java.type("mchhui.hotnpc.utlis.Tempdata");
var tempdata = HotNPC.tempdata;
var listeners;
var listenerName = ["teasawa"];
if(!tempdata.has("listeners")){
 tempdata.set("listeners",new Tempdata());
}
listeners = tempdata.get("listeners");
if (!listeners.has(listenerName[0])) {
  listeners.set(listenerName[0], listenEvent("net.minecraftforge.event.world.ExplosionEvent.Start","HIGH",function(event){
 try{
   event.setCanceled(true)
    }catch(e){
    npc.say(e);
   }
  }
 ))
 npc.say("boom")
 }[/p][p=30, 2, left]

思路挺简单的不多说了。


版权声明:

  • 你不能转载本帖。
  • 你不能声称作者是自己。
小浩喜欢男孩子嘛!
回复

使用道具 举报

16

主题

52

帖子

382

积分

注册会员

Rank: 2

积分
382
人气
7 点
钻石粒
328 粒
贡献
0 点
论坛币
73 个
爱心
0 点

论坛注册会员

发表于 2020-3-4 10:36:10 | 显示全部楼层
我来水自己的帖子了
小浩喜欢男孩子嘛!
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|自定义NPC脚本中文论坛 ( 蜀ICP备17005795号-3 )

GMT+8, 2020-8-15 22:05 , Processed in 0.209416 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部