LootTweaker

LootTweaker

17M Downloads

Question: Is there any tool to autoconvert JSON strings to IData format?

vico93 opened this issue · 2 comments

commented

After vanilla.loot.Functions.parse(string) became deprecated i became worryied because i use extensively this method to add new items to vanilla loot tables. Specifically this script.

I wasnt able to find a good tutorial about this format, so i'm asking if there's any tool to auto convert the string JSON to IData.

Thanks in advance!

commented

There's information about IData here and an example at the bottom of this page. It is near identical to the old string based format, it's pretty much just putting double quotes(") around all the keys, and wrapping the whole thing with curly braces({}) instead of double quotes("). The main difference is that it parses much better.

On another note, your script puzzles me. You use the Functions helper class, but instead of using the methods it provides for the set count and set metadata functions, you parse them from JSON. You have set count functions which are pointless, as they set the count to 1, which is the default. The below script should be functionally identical to yours. You don't even need to use JSON in your script.

/*
 *  @Script: BonusChest++
 *  @Description: Adiciona algumas coisas a mais no loot table do BonusChest
 *  @Dependencies: CraftTweaker e LootTweaker
 */
 
import loottweaker.vanilla.loot.LootTables;
import loottweaker.vanilla.loot.LootTable;
import loottweaker.vanilla.loot.LootPool;
import loottweaker.vanilla.loot.Conditions;
import loottweaker.vanilla.loot.Functions;


val bonuschest = LootTables.getTable("minecraft:chests/spawn_bonus_chest");

val bed_gens = bonuschest.addPool("bed_gens", 1, 2, 0, 1);
val compass_gens = bonuschest.addPool("compass_gens", 1, 1, 0, 1);
val map_gens = bonuschest.addPool("map_gens", 1, 3, 0, 1);
val shovel_gens = bonuschest.addPool("shovel_gens", 1, 1, 0, 1);
val sword_gens = bonuschest.addPool("sword_gens", 1, 1, 0, 1);

bed_gens.addItemEntryHelper(<minecraft:bed>, 4, 2, [Functions.setMetadata(0, 15)], []);
compass_gens.addItemEntry(<minecraft:compass>, 3, 1);

map_gens.addItemEntryHelper(<minecraft:map>, 3, 2, [Functions.setCount(1, 4)], []);

shovel_gens.addItemEntry(<minecraft:stone_shovel>, 1, 1);
shovel_gens.addItemEntry(<minecraft:wooden_shovel>, 3, 1);

sword_gens.addItemEntry(<minecraft:stone_sword>, 1, 1);
sword_gens.addItemEntry(<minecraft:wooden_sword>, 3, 1);
commented

😨 I didnt knew it was so simple. I followed your tutorials and thought the only way to set count was using JSON.

Thanks for this tip!