切换风格

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

1

主题

4

帖子

24

积分

论坛萌新

Rank: 1

积分
24
人气
0 点
钻石粒
31 粒
贡献
0 点
论坛币
5 个
爱心
0 点
[1.7.10][ECMA]屑爆的纯净右键监听(交互)[复制链接]
发表于 2020-4-2 13:42:09 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 1.0.0
适用版本: 1.7.10 
编写语言: ECMA
最后更新: 2020-04-02
代码版权: 弱版权

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

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

x
突发奇想要发帖子
却不知道发些什么
干脆发个右键监听
配合其他联动最佳
(交互)
因为触发效果很快,建议加上一个使用判断。(不然会出现右键一下触发几次)
代码:
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);
}
var HotNPC = Java.type("mchhui.hotnpc.HotNPC");
var Tempdata = Java.type("mchhui.hotnpc.utlis.Tempdata");
var tempdata = HotNPC.tempdata;
var StoreddataManager = Java.type("mchhui.hotnpc.utlis.StoreddataManager");
var listenerName=["YJJT2"];
if(!tempdata.has("listeners")){
tempdata.set("listeners",new Tempdata())
}
/**
*@Author Hueihuea
*著作权属于Hueihuea 2019/6/16起生效
*/
listeners=tempdata.get("listeners");
var PlayerInteractEventAction =Java.type("net.minecraftforge.event.entity.player.PlayerInteractEvent.Action");
if(!listeners.has(listenerName[0])){
listeners.set(listenerName[0],listenEvent("net.minecraftforge.event.entity.player.PlayerInteractEvent","HIGH",function(event){
    if(event.action == PlayerInteractEventAction.LEFT_CLICK_BLOCK){
        return;
    }
    try{
    var EntityClientPlayerMP=Java.type("net.minecraft.client.entity.EntityClientPlayerMP");
    if(event.entityPlayer instanceof EntityClientPlayerMP){
        return;
        //不理会客户端
    }}catch(err){
        //这是服务端
    }
    try{
    var ScriptPlayer=Java.type("noppes.npcs.scripted.ScriptPlayer");
    var player = new ScriptPlayer(event.entityPlayer);
    if(player.getHeldItem()==null){
        return;
    }
if(player.getHeldItem()!=null){
if(player.getHeldItem().getDisplayName()=="物品名"){
player.sendMessage("触发成功。")
}}
    }catch(err){
        npc.say(err)
    }
}));
npc.say("右键监听注册成功")
}

评分

参与人数 1钻石粒 -10 收起 理由
Hueihuea -10 修改费

查看全部评分

回复

使用道具 举报

1

主题

4

帖子

24

积分

论坛萌新

Rank: 1

积分
24
人气
0 点
钻石粒
31 粒
贡献
0 点
论坛币
5 个
爱心
0 点
发表于 2020-4-2 13:46:00 | 显示全部楼层
??这零零散散的是怎么回事。。
(我枯了)
回复

使用道具 举报

4

主题

21

帖子

451

积分

注册会员

Rank: 2

积分
451
人气
7 点
钻石粒
674 粒
贡献
1 点
论坛币
97 个
爱心
0 点

论坛注册会员

发表于 2020-4-2 15:21:08 | 显示全部楼层
?好兄弟,为什么不用代码高亮
我是憨批
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-8-15 21:02 , Processed in 0.092366 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部