就是监听一下这个物品的右键
然后执行give "+player.name.contents+" apple 1,指令,我自己写的怎么也不对,呜呜呜
然后执行give "+player.name.contents+" apple 1,指令,我自己写的怎么也不对,呜呜呜
这里不需要精确比较nbt,否则,在脚本里先写color,后写italic,而在/give指令里先写italic,后写color拿到的物品都无法触发脚本复制代码本身右键的时候没有反应的物品,只会在右键空气时触发RightClickItemEvent事件,所以RightClickBlockEvent事件也要一起监听
- import crafttweaker.api.world.ServerLevel;
 
- import crafttweaker.api.events.CTEventManager;
 
- import crafttweaker.api.data.MapData;
 
- import crafttweaker.api.event.entity.player.interact.PlayerInteractEvent;
 
- import crafttweaker.api.event.entity.player.interact.RightClickItemEvent;
 
- import crafttweaker.api.event.entity.player.interact.RightClickBlockEvent;
 
 
- public function itemInteract(e:PlayerInteractEvent):void{
 
-         val player=e.player;
 
-         val world=player.level;
 
-         val item=e.itemStack;
 
-         if(!world.isClientSide&&item.definition==<item:minecraft:fern>.definition&&item.hoverName.contents=="我是个苹果"){
 
-                 val tag=new MapData(item.tag.getAt("display").asMap());
 
-                 if(tag.contains("Lore")&&"我真的是苹果" in tag.getAt("Lore").getString()){
 
-                         (world as ServerLevel).server.executeCommand("give "+player.name.contents+" apple",true);
 
-                         e.cancellationResult=<constant:minecraft:world/interactionresult:success>;
 
-                         e.cancel();
 
-                 }
 
-         }
 
- }
 
 
- CTEventManager.register<RightClickItemEvent>((e)=>{itemInteract(e);});
 
- CTEventManager.register<RightClickBlockEvent>((e)=>{itemInteract(e);});