DX2002 发表于 2025-4-14 01:51:00

关于CargoAPI里getQuantity函数的疑问

如题,本人参考补给制造mod统计舰队货舱内锻炉数量的代码写了如下代码,希望能实现相同的统计功能,但返回值始终是0。




public float iCalculateBonus(CargoAPI cargo) {
      float iCorrupted = cargo.getQuantity(CargoItemType.SPECIAL, Items.CORRUPTED_NANOFORGE);
      float iPristine = cargo.getQuantity(CargoItemType.SPECIAL, Items.PRISTINE_NANOFORGE);
               
      float iMaxBonus = PristineForgeMultiplier;
      float iBonus = CorruptedForgeMultiplier * iCorrupted + PristineForgeMultiplier * iPristine;
      if (iBonus > iMaxBonus) {
            iBonus = iMaxBonus;
      };

               
        Global.getSector().getCampaignUI().addMessage("iBonus: " + iBonus, Misc.getTextColor());
        Global.getSector().getCampaignUI().addMessage("iPristine: " + iPristine, Misc.getTextColor());
        Global.getSector().getCampaignUI().addMessage("iCorrupted: " + iCorrupted, Misc.getTextColor());


               
      return iBonus+1;
    }


翻看API文件内函数输入值的要求是float getQuantity(CargoItemType paramCargoItemType, Object paramObject);
如果直接照抄原代码的话会出现Cannot determine simple type name "SpecialItemData"的数据类型报错
本人对Java语法的了解十分浅薄,还望大佬们不吝赐教

cjy4312 发表于 2025-4-14 03:01:55

第二个参数填String是不行的,纳米熔炉这种你得new一个SpecialItemData的实例对象
SpecialItemData只要id和param一致,哈希值就是一样的,用==比较使用同一个id来new的两个SpecialItemData是能通过的

DX2002 发表于 2025-4-14 11:39:50

cjy4312 发表于 2025-4-14 03:01
第二个参数填String是不行的,纳米熔炉这种你得new一个SpecialItemData的实例对象
SpecialItemData只要id和 ...

谢谢cjy大佬,我检查了几遍发现是漏import了一个东西,现在解决了{:5_124:}
页: [1]
查看完整版本: 关于CargoAPI里getQuantity函数的疑问