Posted June 18, 20169 yr So i'm trying to add items and blocks to vanilla dungeon chests using the LootTableLoadEvent. But i don't understand much of how to add them. I know i have to do this event.getTable().addPool(new LootPool(new LootEntryItem(itemIn, weightIn, qualityIn, functionsIn, conditionsIn, entryName), poolConditionsIn, rollsIn, bonusRollsIn, name)); but i didn't understand what to place instead of parameters. Also how can i add a sub block to the loot, because from the Item.getItemFromBlock i get only the default value of the block Don't blame me if i always ask for your help. I just want to learn to be better
June 18, 20169 yr To set the metadata of the item, you need to create an instance of the SetMetadata function and include it in the LootFunction array parameter of the LootEntryItem constructor. For damageable items like tools, use the SetDamage function instead. The parameter names mostly correspond to the JSON format, which is explained here. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
June 18, 20169 yr Author Thank you That works, but i want to know if i can improve my code. Right now i have this @SubscribeEvent public void onLootTableLoad(LootTableLoadEvent event) { ResourceLocation name = event.getName(); LootTable table = event.getTable(); LootCondition[] chance = {new RandomChance(50.0F)}; LootFunction[] count = {new SetCount(chance, new RandomValueRange(1.0F, 4.0F))}; LootFunction[] meta = {new SetMetadata(chance, new RandomValueRange(0.0F, 1.0F))}; LootEntryItem[] item = {new LootEntryItem(MWItems.ruby, 50, 1, count, chance, "ruby")}; LootEntryItem[] log = {new LootEntryItem(Item.getItemFromBlock(MWMetadataBlocks.log), 50, 1, meta, chance, "log")}; if(name.equals(LootTableList.CHESTS_SPAWN_BONUS_CHEST)) { table.addPool(new LootPool(item, chance, new RandomValueRange(1.0F), new RandomValueRange(0.0F), "ruby")); table.addPool(new LootPool(log, chance, new RandomValueRange(1.0F), new RandomValueRange(0.0F), "log")); } } wich i think is not the best code (expecially the randomChanceValue) Don't blame me if i always ask for your help. I just want to learn to be better
June 18, 20169 yr Are you sure you want to add a new pool for each item rather than adding the items to an existing pool? I'd recommend checking the name before you create any objects so they're only created when they need to be used. The value of the RandomChance condition should be between 0 and 1 (0% and 100%). Anything over 1 will always be true. I'd recommend separating out the values (conditions, functions, etc.) used by both entries and grouping the values only used by one entry with that entry. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
June 18, 20169 yr Author Thanks for the explanation, i'll group all items into one array and add that, and also lowering the randomChance value to something valid (like 0.5) Don't blame me if i always ask for your help. I just want to learn to be better
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.