adds datagen for block and entity loot
This commit is contained in:
@@ -4,12 +4,16 @@ import net.cmr.jurassicrevived.Constants;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.data.loot.LootTableProvider;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
|
||||
import net.minecraftforge.common.data.BlockTagsProvider;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import net.minecraftforge.data.event.GatherDataEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = Constants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||
@@ -28,5 +32,12 @@ public class DataGenerators {
|
||||
BlockTagsProvider blockTagsProvider = new ForgeBlockTagProvider(packOutput, lookupProvider, existingFileHelper);
|
||||
generator.addProvider(event.includeServer(), blockTagsProvider);
|
||||
generator.addProvider(event.includeServer(), new ForgeItemTagProvider(packOutput, lookupProvider, blockTagsProvider.contentsGetter(), existingFileHelper));
|
||||
|
||||
generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(),
|
||||
List.of(
|
||||
new LootTableProvider.SubProviderEntry(ForgeBlockLootTableProvider::new, LootContextParamSets.BLOCK),
|
||||
new LootTableProvider.SubProviderEntry(ForgeEntityLootTableProvider::new, LootContextParamSets.ENTITY)
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package net.cmr.jurassicrevived.datagen;
|
||||
|
||||
import net.cmr.jurassicrevived.block.ModBlocks;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.data.loot.BlockLootSubProvider;
|
||||
import net.minecraft.world.flag.FeatureFlags;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.storage.loot.LootTable;
|
||||
import net.minecraft.world.level.storage.loot.entries.LootItem;
|
||||
import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount;
|
||||
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction;
|
||||
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
public class ForgeBlockLootTableProvider extends BlockLootSubProvider implements ModBlockLootTableProvider.BlockLootHelper {
|
||||
public ForgeBlockLootTableProvider() {
|
||||
super(Set.of(), FeatureFlags.REGISTRY.allFlags());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void generate() {
|
||||
ModBlockLootTableProvider.registerBlockLootTables(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropSelf(Block block) {
|
||||
super.dropSelf(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(Block block, LootTable.Builder builder) {
|
||||
super.add(block, builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LootTable.Builder createMultipleOreDrops(Block block, Item item, float minDrops, float maxDrops) {
|
||||
return this.createSilkTouchDispatchTable(block, this.applyExplosionDecay(block,
|
||||
LootItem.lootTableItem(item)
|
||||
.apply(SetItemCountFunction.setCount(UniformGenerator.between(minDrops, maxDrops)))
|
||||
.apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LootTable.Builder createPotFlowerItemTable(Block block) {
|
||||
return super.createPotFlowerItemTable(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Iterable<Block> getKnownBlocks() {
|
||||
return StreamSupport.stream(ModBlocks.BLOCKS.spliterator(), false)
|
||||
.map(dev.architectury.registry.registries.RegistrySupplier::get)
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package net.cmr.jurassicrevived.datagen;
|
||||
|
||||
import net.cmr.jurassicrevived.entity.ModEntities;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.data.loot.EntityLootSubProvider;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.flag.FeatureFlags;
|
||||
import net.minecraft.world.level.storage.loot.LootTable;
|
||||
import net.minecraftforge.registries.RegistryObject;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
public class ForgeEntityLootTableProvider extends EntityLootSubProvider implements ModEntityLootTableProvider.EntityLootHelper {
|
||||
|
||||
public ForgeEntityLootTableProvider() {
|
||||
super(FeatureFlags.REGISTRY.allFlags());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate() {
|
||||
ModEntityLootTableProvider.registerEntityLootTables(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(EntityType<?> type, LootTable.Builder builder) {
|
||||
super.add(type, builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull Stream<EntityType<?>> getKnownEntityTypes() {
|
||||
return StreamSupport.stream(ModEntities.ENTITIES.spliterator(), false)
|
||||
.map(dev.architectury.registry.registries.RegistrySupplier::get);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user