yaoraoxiaosa
就是监听一下这个物品的右键




然后执行give "+player.name.contents+" apple 1,指令,我自己写的怎么也不对,呜呜呜

无敌三脚猫
这里不需要精确比较nbt,否则,在脚本里先写color,后写italic,而在/give指令里先写italic,后写color拿到的物品都无法触发脚本
  1. import crafttweaker.api.world.ServerLevel;
  2. import crafttweaker.api.events.CTEventManager;
  3. import crafttweaker.api.data.MapData;
  4. import crafttweaker.api.event.entity.player.interact.PlayerInteractEvent;
  5. import crafttweaker.api.event.entity.player.interact.RightClickItemEvent;
  6. import crafttweaker.api.event.entity.player.interact.RightClickBlockEvent;

  7. public function itemInteract(e:PlayerInteractEvent):void{
  8.         val player=e.player;
  9.         val world=player.level;
  10.         val item=e.itemStack;
  11.         if(!world.isClientSide&&item.definition==<item:minecraft:fern>.definition&&item.hoverName.contents=="我是个苹果"){
  12.                 val tag=new MapData(item.tag.getAt("display").asMap());
  13.                 if(tag.contains("Lore")&&"我真的是苹果" in tag.getAt("Lore").getString()){
  14.                         (world as ServerLevel).server.executeCommand("give "+player.name.contents+" apple",true);
  15.                         e.cancellationResult=<constant:minecraft:world/interactionresult:success>;
  16.                         e.cancel();
  17.                 }
  18.         }
  19. }

  20. CTEventManager.register<RightClickItemEvent>((e)=>{itemInteract(e);});
  21. CTEventManager.register<RightClickBlockEvent>((e)=>{itemInteract(e);});
复制代码
本身右键的时候没有反应的物品,只会在右键空气时触发RightClickItemEvent事件,所以RightClickBlockEvent事件也要一起监听