Class LootTableAnalyzer

java.lang.Object
com.minecolonies.core.colony.crafting.LootTableAnalyzer

public final class LootTableAnalyzer extends Object
Utility helper that analyzes a loot table to determine a likely list of drops, along with their drop rate, for presentation in JEI (and perhaps other purposes). This is just informational and in particular shouldn't be used to actually generate loot -- due to constraints with how loot tables are stored this can only produce an approximation of a subset of possible loot results. Good enough to be indicative but that's all. Currently it only supports a very limited set of conditions and properties; just enough for current usage by MineColonies recipes. If tables are extended with additional conditions or properties then this would have to be adjusted to cope as well.
  • Method Details

    • toDrops

      public static List<LootTableAnalyzer.LootDrop> toDrops(net.minecraft.core.HolderLookup.Provider provider, @NotNull @NotNull net.minecraft.resources.ResourceKey<net.minecraft.world.level.storage.loot.LootTable> lootTableId)
      Evaluate a loot table and report possible drops.
      Parameters:
      provider - the registry provider
      lootTableId - the loot table id
      Returns:
      the list of possible drops
    • toDrops

      public static List<LootTableAnalyzer.LootDrop> toDrops(@NotNull net.minecraft.core.HolderLookup.Provider provider, @NotNull @NotNull net.minecraft.core.Holder<net.minecraft.world.level.storage.loot.LootTable> lootTable)
      Evaluate a loot table and report possible drops.
      Parameters:
      provider - the registry provider
      lootTable - the loot table
      Returns:
      the list of possible drops
    • toDrops

      public static List<LootTableAnalyzer.LootDrop> toDrops(@NotNull net.minecraft.core.HolderLookup.Provider provider, @NotNull @NotNull com.google.gson.JsonObject lootTableJson)
      Evaluate a loot table and report possible drops.
      Parameters:
      provider - the registry provider
      lootTableJson - the loot table json
      Returns:
      the list of possible drops
    • consolidate

      @NotNull public static @NotNull List<LootTableAnalyzer.LootDrop> consolidate(@NotNull @NotNull List<LootTableAnalyzer.LootDrop> input)
      Groups and sorts drops by probability (most likely first, with similar-probability items in the same "slot" as alternatives).
      Parameters:
      input - the unsorted list of drops
      Returns:
      the sorted list of drops