friendlyhj / ZenUtils

Home Page:https://www.curseforge.com/minecraft/mc-mods/zenutil

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Crash] 使用由CompactSkill提供的某些方法后,会导致ZU崩溃

TUsama opened this issue · comments

commented

报告:
https://paste.ee/p/QkFYc

描述:
在使用了来自CS的隐藏Skill方法时,若隐藏的Skill中有使用了ZU方法的Trait,则会引发报错。

能否发一下你使用的脚本?

commented

脚本a:

import mods.compatskills.Unlockable;

mods.compatskills.VisibilityLock.addVisibilityLock(<skill:reskillable:apple>, "stage|apple");

脚本b:

import ...
//创建Trait
var apple1 = mods.compatskills.TraitCreator.createTrait("apple1 ", 2, 3, "compatskills:apple", 1, "compatskills:apple|5");


//Trait内容
events.onEntityLivingAttacked(function(event as crafttweaker.event.EntityLivingAttackedEvent) {
    var entity as IEntity = event.damageSource.getTrueSource();
    var mob1 as IEntity = event.entity;
    //确保击中者与被击中者的类型正确
    if (!entity instanceof IPlayer || !mob1 instanceof IEntityLivingBase || mob1 instanceof IPlayer) return;
    var player as IPlayer = entity;
    var mob as IEntityLivingBase = event.entity;
    var remote as bool = player.world.remote;
    if (remote) return;
    if (!(isNull(player.data.thedeath) ||  player.data.thedeath == false)) return;
      //此处将 catenation  用为冷却时间计数
      var catenation  = player.world.catenation()
                                    .run(function(world, context){
                                    var cooldownCheck1 as IData = {thedeath : true};
                                    dataUpdate(player, cooldownCheck1);
                                  })
                                    .sleep(100)
                                    .then(function(world, context){
                                      var cooldownCheck2 as IData = {thedeath : false};
                                      dataUpdate(player, cooldownCheck2);
                                    })
                                    .stopWhen(function(world, context) {
                                      return !player.alive;
                                    })
                                    .start();
      var randomInt as int = player.world.random.nextInt(100);
      var lossHealth as float = player.maxHealth - player.health;
      var bound as int = 10 + lossHealth - 1;
      if (randomInt <= bound) {
        mob.health = 0.0;
      } else {
        mob.health -= mob.maxHealth * 0.1;
      }

});

commented

友谊老师,好像是我的问题,我把Trait注释掉了还是会崩,我先关了issue自个研究一下吧(