yaoraoxiaosa
上次@无敌三脚猫 大佬给我写了一份crt的使用物品触发指令的脚本,但是使用后不消耗物品,我现在需要一个使用后消耗物品的代码,需要在这个代码的基础上作出修改
  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);});
复制代码



无敌三脚猫
在上次的帖子里你就可以问的
在e.cancel();的后面(前面也可以)加一行
  1. player.setItemInHand(e.hand,item.shrink(1));
复制代码
就好

第一页 上一页 下一页 最后一页