Component_Economy_trade_table: {
    type: "compound";
    value: {
        ConvertedFromVillagerV1?: { type: "byte"; value: number };
        HighTierCuredDiscount?: { type: "int"; value: number };
        LowTierCuredDiscount?: { type: "int"; value: number };
        NearbyCuredDiscount?: { type: "int"; value: number };
        NearbyCuredDiscountTimeStamp?: { type: "int"; value: number };
        Offers?: {
            type: "compound";
            value: {
                Recipes: {
                    type: "list";
                    value: {
                        type: "compound";
                        value: {
                            buyA: { type: "compound"; value: object } & Item_ItemStack;
                            buyB?: { type: "compound"; value: object } & Item_ItemStack;
                            buyCountA: { type: "int"; value: number };
                            buyCountB: { type: "int"; value: number };
                            demand: { type: "int"; value: number };
                            maxUses: { type: "int"; value: number };
                            priceMultiplierA: { type: "float"; value: number };
                            priceMultiplierB: { type: "float"; value: number };
                            rewardExp: { type: "byte"; value: number };
                            sell: { type: "compound"; value: object } & Item_ItemStack;
                            tier: { type: "int"; value: number };
                            traderExp: { type: "int"; value: number };
                            uses: { type: "int"; value: number };
                        }[];
                    };
                };
                TierExpRequirements: {
                    type: "list";
                    value: {
                        type: "compound";
                        value: { "<''tier_level_num''>": { type: "int"; value: number } }[];
                    };
                };
            };
        };
        Riches: { type: "int"; value: number };
        TradeTablePath?: { type: "string"; value: string };
    };
}

This component is used by villagers and wandering traders.

Type declaration

  • type: "compound"
  • value: {
        ConvertedFromVillagerV1?: { type: "byte"; value: number };
        HighTierCuredDiscount?: { type: "int"; value: number };
        LowTierCuredDiscount?: { type: "int"; value: number };
        NearbyCuredDiscount?: { type: "int"; value: number };
        NearbyCuredDiscountTimeStamp?: { type: "int"; value: number };
        Offers?: {
            type: "compound";
            value: {
                Recipes: {
                    type: "list";
                    value: {
                        type: "compound";
                        value: {
                            buyA: { type: "compound"; value: object } & Item_ItemStack;
                            buyB?: { type: "compound"; value: object } & Item_ItemStack;
                            buyCountA: { type: "int"; value: number };
                            buyCountB: { type: "int"; value: number };
                            demand: { type: "int"; value: number };
                            maxUses: { type: "int"; value: number };
                            priceMultiplierA: { type: "float"; value: number };
                            priceMultiplierB: { type: "float"; value: number };
                            rewardExp: { type: "byte"; value: number };
                            sell: { type: "compound"; value: object } & Item_ItemStack;
                            tier: { type: "int"; value: number };
                            traderExp: { type: "int"; value: number };
                            uses: { type: "int"; value: number };
                        }[];
                    };
                };
                TierExpRequirements: {
                    type: "list";
                    value: {
                        type: "compound";
                        value: { "<''tier_level_num''>": { type: "int"; value: number } }[];
                    };
                };
            };
        };
        Riches: { type: "int"; value: number };
        TradeTablePath?: { type: "string"; value: string };
    }
    • OptionalConvertedFromVillagerV1?: { type: "byte"; value: number }

      (May not exist) UNDOCUMENTED.

    • OptionalHighTierCuredDiscount?: { type: "int"; value: number }

      (May not exist) The discount price adjuster gained by curing zombie villagers

    • OptionalLowTierCuredDiscount?: { type: "int"; value: number }

      (May not exist) The discount price adjuster gained by curing zombie villagers

    • OptionalNearbyCuredDiscount?: { type: "int"; value: number }

      (May not exist) The discount price adjuster gained by curing nearby zombie villagers

    • OptionalNearbyCuredDiscountTimeStamp?: { type: "int"; value: number }

      (May not exist) The discount price adjuster gained by curing nearby zombie villagers

    • OptionalOffers?: {
          type: "compound";
          value: {
              Recipes: {
                  type: "list";
                  value: {
                      type: "compound";
                      value: {
                          buyA: { type: "compound"; value: object } & Item_ItemStack;
                          buyB?: { type: "compound"; value: object } & Item_ItemStack;
                          buyCountA: { type: "int"; value: number };
                          buyCountB: { type: "int"; value: number };
                          demand: { type: "int"; value: number };
                          maxUses: { type: "int"; value: number };
                          priceMultiplierA: { type: "float"; value: number };
                          priceMultiplierB: { type: "float"; value: number };
                          rewardExp: { type: "byte"; value: number };
                          sell: { type: "compound"; value: object } & Item_ItemStack;
                          tier: { type: "int"; value: number };
                          traderExp: { type: "int"; value: number };
                          uses: { type: "int"; value: number };
                      }[];
                  };
              };
              TierExpRequirements: {
                  type: "list";
                  value: {
                      type: "compound";
                      value: { "<''tier_level_num''>": { type: "int"; value: number } }[];
                  };
              };
          };
      }

      (May not exist) The trade info.

      • type: "compound"
      • value: {
            Recipes: {
                type: "list";
                value: {
                    type: "compound";
                    value: {
                        buyA: { type: "compound"; value: object } & Item_ItemStack;
                        buyB?: { type: "compound"; value: object } & Item_ItemStack;
                        buyCountA: { type: "int"; value: number };
                        buyCountB: { type: "int"; value: number };
                        demand: { type: "int"; value: number };
                        maxUses: { type: "int"; value: number };
                        priceMultiplierA: { type: "float"; value: number };
                        priceMultiplierB: { type: "float"; value: number };
                        rewardExp: { type: "byte"; value: number };
                        sell: { type: "compound"; value: object } & Item_ItemStack;
                        tier: { type: "int"; value: number };
                        traderExp: { type: "int"; value: number };
                        uses: { type: "int"; value: number };
                    }[];
                };
            };
            TierExpRequirements: {
                type: "list";
                value: {
                    type: "compound";
                    value: { "<''tier_level_num''>": { type: "int"; value: number } }[];
                };
            };
        }
        • Recipes: {
              type: "list";
              value: {
                  type: "compound";
                  value: {
                      buyA: { type: "compound"; value: object } & Item_ItemStack;
                      buyB?: { type: "compound"; value: object } & Item_ItemStack;
                      buyCountA: { type: "int"; value: number };
                      buyCountB: { type: "int"; value: number };
                      demand: { type: "int"; value: number };
                      maxUses: { type: "int"; value: number };
                      priceMultiplierA: { type: "float"; value: number };
                      priceMultiplierB: { type: "float"; value: number };
                      rewardExp: { type: "byte"; value: number };
                      sell: { type: "compound"; value: object } & Item_ItemStack;
                      tier: { type: "int"; value: number };
                      traderExp: { type: "int"; value: number };
                      uses: { type: "int"; value: number };
                  }[];
              };
          }

          The list of trade recipes.

        • TierExpRequirements: {
              type: "list";
              value: {
                  type: "compound";
                  value: { "<''tier_level_num''>": { type: "int"; value: number } }[];
              };
          }

          Trade experiences required to become each trade tier.

    • Riches: { type: "int"; value: number }

      UNDOCUMENTED.

    • OptionalTradeTablePath?: { type: "string"; value: string }

      (May not exist) The path of the json file of the trade table.