2503180246b
想通过npc脚本或crt实现之前小游戏服里的 角色技能 [例如:像前方传送、发射火焰弹,雷击,地震]

触发条件:右键物品
设置技能使用冷却时间,不消耗物品

ps:技能触发效果可以直接使用指令进行,只需要一个代码模板,即右键触发某指令,并且有冷却时间限制 即可

感谢大佬

Wudji
本帖最后由 Wudji 于 2022-3-26 15:59 编辑

KubeJS示例(server script)

  1. onEvent('item.right_click', function (event) {
  2.         switch (event.item.id) {
  3.                 case "minecraft:item_id0":
  4.                         event.server.runCommandSilent("say item.right_click test0");
  5.                         event.player.addItemCooldown("minecraft:item_id0", 200); // 冷却 200 ticks,即10s
  6.                         event.item.count--; // 物品数量-1
  7.                         break;
  8.                 case "minecraft:item_id1":
  9.                         event.server.runCommandSilent("say item.right_click test1");
  10.                         event.player.addItemCooldown("minecraft:item_id1", 200); // 冷却 200 ticks,即10s
  11.                         event.item.count--; // 物品数量-1
  12.                         break;
  13.          
  14.         }
  15. })
复制代码


crt参考https://youyi580.gitbook.io/cog/advance/event
右键物品事件:
  1. import crafttweaker.api.event.entity.player.interact.RightClickItemEvent;
复制代码

(不知道crt怎么写物品冷却)

无敌三脚猫
  1. function interact(e){
  2. if(e.player.getMainhandItem().getName()=="minecraft:paper"){
  3. e.API.executeCommand(e.player.world,"tellraw "+e.player.getName()+' {"text":"执行了指令"}')
  4. var p=e.player.getMCEntity()
  5. p.func_184811_cZ().func_185145_a(e.player.getMainhandItem().getMCItemStack().func_77973_b(),100)
  6. p.func_184602_cy()
  7. }
  8. }
复制代码
那个100是冷却时间,单位是刻,20刻是1秒

2503180246b
本帖最后由 2503180246b 于 2022-3-26 15:57 编辑
无敌三脚猫 发表于 2022-3-26 11:48
那个100是冷却时间,单位是刻,20刻是1秒

这里改写指令的位置是{"text":"执行了指令"} 这里面的吗 我改成{"lighting"}貌似不行 是不是格式不对 求更正

2503180246b
Wudji 发表于 2022-3-26 11:23
KubeJS示例(server script)

KubeJS是类似crt的mod么

Wudji
2503180246b 发表于 2022-3-26 15:54
KubeJS是类似crt的mod么

对的         
教程见
[SCT]KubeJS魔改教程
https://www.mcbbs.net/thread-1207772-1-1.html
(出处: Minecraft(我的世界)中文论坛)

无敌三脚猫
2503180246b 发表于 2022-3-26 15:52
这里改写指令的位置是{"text":"执行了指令"} 这里面的吗 我改成{"lighting"}貌似不行 是不是格式不对 求更 ...

这里的+号能把字符串连起来,比如说右键物品的人名字叫steve,那e.player.getName()也就是steve,3串字符加起来是
tellraw steve {"text":"执行了指令"}
这是一个完整的指令
(你不会是没见过tellraw吧,早知道我就写say了)

2503180246b
无敌三脚猫 发表于 2022-3-26 16:02
这里的+号能把字符串连起来,比如说右键物品的人名字叫steve,那e.player.getName()也就是steve,3串字符 ...

哦哦,那如果我想让玩家实现 右键执行spawn的指令,那里概怎么改呢刚刚直接改了spawn 貌似不行

无敌三脚猫
2503180246b 发表于 2022-3-26 16:19
哦哦,那如果我想让玩家实现 右键执行spawn的指令,那里概怎么改呢刚刚直接改了spawn 貌似不行
...

lighting……还有spawn都来了,你这明明是插件的指令啊,写成sudo spawn也许可以,不过你玩的这个服务器明明能装插件为啥不用插件执行指令呢?https://www.mcbbs.net/thread-682208-1-1.html

2503180246b
无敌三脚猫 发表于 2022-3-26 16:23
lighting……还有spawn都来了,你这明明是插件的指令啊,写成sudo spawn也许可以,不过你玩的这个服务器 ...

可恶啊 这么好的插件我为什么现在才知道 感谢分享
另外想问下,crt想修改物品的displauname
我是这样写了个貌似不行
<minecraft:paper>.addTooltip("§e这个方块可以存东西");
<minecraft:chest>.addTooltip("aaa啊啊啊");
<minecraft:chest>.displayName("名字");

只展现了lore的信息 那个displayname没变

无敌三脚猫
2503180246b 发表于 2022-3-26 16:28
可恶啊 这么好的插件我为什么现在才知道 感谢分享
另外想问下,crt想修改物品的displauname
我是这样写了 ...

<minecraft:chest>.displayName="名字";
显然你没有分清楚什么叫getter,什么叫setter
https://docs.blamejared.com/1.12/en/Vanilla/Items/IItemStack

2503180246b
无敌三脚猫 发表于 2022-3-26 16:31
.displayName="名字";
显然你没有分清楚什么叫getter,什么叫setter
https://docs.blamejared.com/1.12/e ...

好的 感谢大佬