Record each trading direction and bundle size
For each product, record the currency, quantity, player purchase price, and resale price. “Price 5” without a direction does not allow you to calculate the exchange. Withdraw the balance and quantity of items before and after one transaction using a regular account.
Separately measure ten minutes of manual extraction and ten minutes of farm work for the same resource. Consider consumables; the cost of building a farm is recorded separately from current income. The calculation example below is the author's, all prices are educational.
Calculate the path block → ingots → money
Let a store sell an iron block for 10 and buy an ingot for 2. One block turns into 9 bars, which are sold for 18: cycle profit 8. Save the code in price_check.py and run python3 price_check.py or py price_check.py. Decimal is created from strings so as not to introduce the binary error of monetary fractions.
from decimal import Decimal
buy_block = Decimal("10")
sell_ingot = Decimal("2")
ingots_per_block = 9
profit = ingots_per_block * sell_ingot - buy_block
print(f"Прибыль одного цикла: {profit}")
print("Исправить цены" if profit > 0 else "Этот цикл не прибыльный")Verify each transfer on a test copy
Positive settlement only means a problem when all operations are actually allowed for that player. During the test, buy a block, unpack and sell the bars. Check item components, limits and rights; they may make part of the path inaccessible.
Repeat the purchase with insufficient money and almost full inventory. The menu price, the actual write-off and the number of items issued must match. Determine in advance the outcome for an item that does not fit: refusal before payment or preserved delivery, and not quiet loss.
Correct one side of the loop and repeat the measurement
Reducing the selling price of an ingot or raising the buying price of a block are different solutions; change one thing and follow the same path again. If the profitable exchange is intentional, the limit should be maintained after the restart. Keep the original table and the reason for the change.
To develop a store, VaultAPI gives access to the economy provider; check the withdrawPlayer result, not just the preliminary balance. A failure after a write-off requires reconciliation of the saved transaction before repeating it. An approximate goal for 600 with an income of 120 in ten minutes takes five such sessions before expenses - this is the calculation of your scenario, not a universal norm.
Repeating delivery after an unknown outcome should not double the output. Save the fact of the monetary transaction.
Basic help and a way out should not depend on an incomprehensible purchase. Check the availability of the first target.

