Skip to content

Commit 731eab4

Browse files
committed
Add raid hero gifts for the fluix researcher villager
Fixes #8456
1 parent 4679cb2 commit 731eab4

File tree

7 files changed

+108
-1
lines changed

7 files changed

+108
-1
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"type": "minecraft:gift",
3+
"pools": [
4+
{
5+
"bonus_rolls": 0.0,
6+
"entries": [
7+
{
8+
"type": "minecraft:item",
9+
"name": "ae2:certus_quartz_crystal"
10+
},
11+
{
12+
"type": "minecraft:item",
13+
"name": "ae2:fluix_crystal"
14+
}
15+
],
16+
"rolls": 1.0
17+
}
18+
],
19+
"random_sequence": "ae2:gameplay/hero_of_the_village/fluix_researcher_gifts"
20+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"values": {
3+
"ae2:fluix_researcher": {
4+
"loot_table": "ae2:gameplay/hero_of_the_village/fluix_researcher_gifts"
5+
}
6+
}
7+
}

src/main/java/appeng/datagen/AE2DataGenerators.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import appeng.core.AppEng;
3838
import appeng.core.definitions.AEDamageTypes;
3939
import appeng.datagen.providers.advancements.AdvancementGenerator;
40+
import appeng.datagen.providers.datamaps.RaidHeroGiftsProvider;
4041
import appeng.datagen.providers.localization.LocalizationProvider;
4142
import appeng.datagen.providers.loot.AE2LootTableProvider;
4243
import appeng.datagen.providers.models.BlockModelProvider;
@@ -121,6 +122,9 @@ public static void onGatherData(GatherDataEvent event) {
121122
pack.addProvider(bindRegistries(QuartzCuttingRecipesProvider::new, registries));
122123
pack.addProvider(bindRegistries(UpgradeRecipes::new, registries));
123124

125+
// DataMaps
126+
pack.addProvider(bindRegistries(RaidHeroGiftsProvider::new, registries));
127+
124128
// Must run last
125129
pack.addProvider(packOutput -> localization);
126130
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package appeng.datagen.providers.datamaps;
2+
3+
import static net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps.RAID_HERO_GIFTS;
4+
5+
import java.util.concurrent.CompletableFuture;
6+
7+
import net.minecraft.core.HolderLookup;
8+
import net.minecraft.data.PackOutput;
9+
import net.neoforged.neoforge.common.data.DataMapProvider;
10+
import net.neoforged.neoforge.registries.datamaps.builtin.RaidHeroGift;
11+
12+
import appeng.datagen.providers.IAE2DataProvider;
13+
import appeng.init.InitVillager;
14+
15+
public class RaidHeroGiftsProvider extends DataMapProvider implements IAE2DataProvider {
16+
public RaidHeroGiftsProvider(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> lookupProvider) {
17+
super(packOutput, lookupProvider);
18+
}
19+
20+
@Override
21+
public void gather(HolderLookup.Provider provider) {
22+
this.builder(RAID_HERO_GIFTS)
23+
.add(InitVillager.ID, new RaidHeroGift(InitVillager.LOOT_TABLE_KEY), false);
24+
}
25+
}

src/main/java/appeng/datagen/providers/loot/AE2LootTableProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515

1616
public class AE2LootTableProvider extends LootTableProvider {
1717
private static final List<SubProviderEntry> SUB_PROVIDERS = List.of(
18-
new SubProviderEntry(BlockDropProvider::new, LootContextParamSets.BLOCK));
18+
new SubProviderEntry(BlockDropProvider::new, LootContextParamSets.BLOCK),
19+
new SubProviderEntry(RaidHeroGiftLootProvider::new, LootContextParamSets.GIFT));
1920

2021
public AE2LootTableProvider(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> provider) {
2122
super(packOutput, Set.of(), SUB_PROVIDERS, provider);
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* This file is part of Applied Energistics 2.
3+
* Copyright (c) 2021, TeamAppliedEnergistics, All rights reserved.
4+
*
5+
* Applied Energistics 2 is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* Applied Energistics 2 is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
17+
*/
18+
19+
package appeng.datagen.providers.loot;
20+
21+
import java.util.function.BiConsumer;
22+
23+
import net.minecraft.core.HolderLookup;
24+
import net.minecraft.data.loot.LootTableSubProvider;
25+
import net.minecraft.resources.ResourceKey;
26+
import net.minecraft.world.level.storage.loot.LootPool;
27+
import net.minecraft.world.level.storage.loot.LootTable;
28+
import net.minecraft.world.level.storage.loot.entries.LootItem;
29+
30+
import appeng.core.definitions.AEItems;
31+
import appeng.init.InitVillager;
32+
33+
public class RaidHeroGiftLootProvider implements LootTableSubProvider {
34+
public RaidHeroGiftLootProvider(HolderLookup.Provider lookupProvider) {
35+
}
36+
37+
@Override
38+
public void generate(BiConsumer<ResourceKey<LootTable>, LootTable.Builder> biConsumer) {
39+
biConsumer.accept(
40+
InitVillager.LOOT_TABLE_KEY,
41+
LootTable.lootTable()
42+
.withPool(LootPool.lootPool()
43+
.add(LootItem.lootTableItem(AEItems.CERTUS_QUARTZ_CRYSTAL))
44+
.add(LootItem.lootTableItem(AEItems.FLUIX_CRYSTAL))));
45+
}
46+
}

src/main/java/appeng/init/InitVillager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import net.minecraft.world.entity.npc.VillagerTrades;
1818
import net.minecraft.world.item.Items;
1919
import net.minecraft.world.level.ItemLike;
20+
import net.minecraft.world.level.storage.loot.LootTable;
2021
import net.neoforged.neoforge.event.village.VillagerTradesEvent;
2122

2223
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
@@ -38,6 +39,9 @@ private InitVillager() {
3839
public static final VillagerProfession PROFESSION = new VillagerProfession(ID.toString(), e -> e.is(POI_KEY),
3940
e -> e.is(POI_KEY), ImmutableSet.of(), ImmutableSet.of(), SoundEvents.VILLAGER_WORK_LIBRARIAN);
4041

42+
public static final ResourceKey<LootTable> LOOT_TABLE_KEY = ResourceKey.create(Registries.LOOT_TABLE,
43+
AppEng.makeId("gameplay/hero_of_the_village/fluix_researcher_gifts"));
44+
4145
public static void initProfession(Registry<VillagerProfession> registry) {
4246
Registry.register(registry, ID, PROFESSION);
4347
}

0 commit comments

Comments
 (0)