具有加权随机百分比的板条箱

时间:2018-05-17 23:45:12

标签: java minecraft bukkit

我正在开发一个Spigot / Bukkit 1.8插件,我正在尝试添加带随机称重项目的包装箱。

例如Diamond,10%;黄金,30%;雷石东,50%;

我尝试将项目保存在CrateItem列表中,该列表是以下类

private ItemStack item;
private double chance;

public CrateItem(ItemStack item, double chance) {
    this.item = item;
    this.chance = chance;
}

public ItemStack getItem() {
    return item;
}

public double getChance() {
    return chance;
}

然后我计划循环使用这些项目,但我不知道最好的方法来计算称重的部分,而不是完全随机的。

1 个答案:

答案 0 :(得分:1)

这是纯粹的理论,我没有设计丢弃表的经验;但是,如果你循环每个项目,并以百分比的下降机会进行真假检查,该怎么办?你可以重复一个,直到只有一个项目为真(假设包只丢弃一个项目)

详细说明,你会...

  1. 遍历每个项目,并使用它们的丢弃机会,生成一个真/假值,指示是否可以删除。
  2. 如果true / false值为false,请从此包装箱中删除该项目。
  3. 如果true / false值为true,请将该项保存在此包中。
  4. 重复步骤1-3,直到只剩下1个项目。
  5. 剩下的项目将是箱子掉落的物品。
  6. 如果您的箱子要丢弃多个物品,例如3滴。你可以完成整个过程3次。

    请注意,如果你的箱子掉落很多,这可能会导致性能问题,并且/或者有很多物品可以循环使用。