Skip to content

Commit 4886d79

Browse files
authored
Add (rather OP?) hero of the village drops to MI villager (#980)
1 parent a348e13 commit 4886d79

File tree

8 files changed

+147
-3
lines changed

8 files changed

+147
-3
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"type": "minecraft:gift",
3+
"pools": [
4+
{
5+
"bonus_rolls": 0.0,
6+
"entries": [
7+
{
8+
"type": "minecraft:item",
9+
"name": "modern_industrialization:steel_upgrade"
10+
},
11+
{
12+
"type": "minecraft:item",
13+
"name": "modern_industrialization:piston"
14+
},
15+
{
16+
"type": "minecraft:item",
17+
"name": "modern_industrialization:robot_arm"
18+
},
19+
{
20+
"type": "minecraft:item",
21+
"name": "modern_industrialization:basic_machine_hull"
22+
},
23+
{
24+
"type": "minecraft:item",
25+
"name": "modern_industrialization:bronze_drill"
26+
},
27+
{
28+
"type": "minecraft:item",
29+
"name": "modern_industrialization:steel_drill"
30+
}
31+
],
32+
"rolls": 1.0
33+
}
34+
],
35+
"random_sequence": "modern_industrialization:gameplay/hero_of_the_village/industrialist_gift"
36+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"values": {
3+
"modern_industrialization:industrialist": {
4+
"loot_table": "modern_industrialization:gameplay/hero_of_the_village/industrialist_gift"
5+
}
6+
}
7+
}

src/main/java/aztech/modern_industrialization/MIRegistries.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.Comparator;
3737
import java.util.Set;
3838
import java.util.function.Supplier;
39+
import net.minecraft.core.Holder;
3940
import net.minecraft.core.registries.Registries;
4041
import net.minecraft.sounds.SoundEvents;
4142
import net.minecraft.world.entity.ai.village.poi.PoiType;
@@ -124,7 +125,7 @@ public class MIRegistries {
124125
// Villager professions
125126
public static final DeferredRegister<VillagerProfession> VILLAGER_PROFESSIONS = DeferredRegister.create(Registries.VILLAGER_PROFESSION, MI.ID);
126127

127-
public static final Supplier<VillagerProfession> INDUSTRIALIST = VILLAGER_PROFESSIONS.register("industrialist", () -> {
128+
public static final Holder<VillagerProfession> INDUSTRIALIST = VILLAGER_PROFESSIONS.register("industrialist", () -> {
128129
return new VillagerProfession(
129130
INDUSTRIALIST_POI.getId().toString(),
130131
e -> e.is(INDUSTRIALIST_POI.getId()),

src/main/java/aztech/modern_industrialization/MIVillager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
public class MIVillager {
3535
public static void init(VillagerTradesEvent event) {
36-
if (event.getType() != MIRegistries.INDUSTRIALIST.get()) {
36+
if (event.getType() != MIRegistries.INDUSTRIALIST.value()) {
3737
return;
3838
}
3939

src/main/java/aztech/modern_industrialization/datagen/MIDatagenServer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import aztech.modern_industrialization.datagen.datamap.MIDataMapProvider;
2929
import aztech.modern_industrialization.datagen.dynreg.DynamicRegistryDatagen;
3030
import aztech.modern_industrialization.datagen.loot.BlockLootTableProvider;
31+
import aztech.modern_industrialization.datagen.loot.MIGiftLoot;
3132
import aztech.modern_industrialization.datagen.recipe.AlloyRecipesProvider;
3233
import aztech.modern_industrialization.datagen.recipe.AssemblerRecipesProvider;
3334
import aztech.modern_industrialization.datagen.recipe.CompatRecipesProvider;
@@ -82,7 +83,8 @@ public static void configure(
8283
aggregate.addProvider(EmptyTestStructureGenerator::new);
8384

8485
gen.addProvider(run, new LootTableProvider(gen.getPackOutput(), Set.of(), List.of(
85-
new LootTableProvider.SubProviderEntry(BlockLootTableProvider::new, LootContextParamSets.BLOCK)),
86+
new LootTableProvider.SubProviderEntry(BlockLootTableProvider::new, LootContextParamSets.BLOCK),
87+
new LootTableProvider.SubProviderEntry(MIGiftLoot::new, LootContextParamSets.GIFT)),
8688
lookupProvider));
8789

8890
gen.addProvider(run,

src/main/java/aztech/modern_industrialization/datagen/datamap/MIDataMapProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
import aztech.modern_industrialization.MI;
2727
import aztech.modern_industrialization.MIFluids;
2828
import aztech.modern_industrialization.MIItem;
29+
import aztech.modern_industrialization.MIRegistries;
2930
import aztech.modern_industrialization.api.datamaps.FluidFuel;
3031
import aztech.modern_industrialization.api.datamaps.ItemPipeUpgrade;
3132
import aztech.modern_industrialization.api.datamaps.MIDataMaps;
3233
import aztech.modern_industrialization.api.datamaps.MachineUpgrade;
34+
import aztech.modern_industrialization.datagen.loot.MILootTables;
3335
import aztech.modern_industrialization.definition.FluidDefinition;
3436
import aztech.modern_industrialization.definition.ItemDefinition;
3537
import java.util.concurrent.CompletableFuture;
@@ -40,6 +42,7 @@
4042
import net.neoforged.neoforge.common.data.DataMapProvider;
4143
import net.neoforged.neoforge.registries.datamaps.builtin.FurnaceFuel;
4244
import net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps;
45+
import net.neoforged.neoforge.registries.datamaps.builtin.RaidHeroGift;
4346

4447
public class MIDataMapProvider extends DataMapProvider {
4548
public MIDataMapProvider(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> lookupProvider) {
@@ -53,6 +56,9 @@ protected void gather() {
5356
gatherFluidFuels();
5457
gatherItemPipeUpgrades();
5558
gatherMachineUpgrades();
59+
60+
builder(NeoForgeDataMaps.RAID_HERO_GIFTS)
61+
.add(MIRegistries.INDUSTRIALIST, new RaidHeroGift(MILootTables.INDUSTRIALIST_GIFT), false);
5662
}
5763

5864
private void gatherFurnaceFuels() {
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* MIT License
3+
*
4+
* Copyright (c) 2020 Azercoco & Technici4n
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
package aztech.modern_industrialization.datagen.loot;
25+
26+
import aztech.modern_industrialization.MIBlock;
27+
import aztech.modern_industrialization.MIItem;
28+
import aztech.modern_industrialization.materials.MIMaterials;
29+
import aztech.modern_industrialization.materials.part.MIParts;
30+
import java.util.function.BiConsumer;
31+
import net.minecraft.core.HolderLookup;
32+
import net.minecraft.data.loot.LootTableSubProvider;
33+
import net.minecraft.resources.ResourceKey;
34+
import net.minecraft.world.level.storage.loot.LootPool;
35+
import net.minecraft.world.level.storage.loot.LootTable;
36+
import net.minecraft.world.level.storage.loot.entries.LootItem;
37+
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
38+
39+
public record MIGiftLoot(HolderLookup.Provider registries) implements LootTableSubProvider {
40+
@Override
41+
public void generate(BiConsumer<ResourceKey<LootTable>, LootTable.Builder> output) {
42+
output.accept(
43+
MILootTables.INDUSTRIALIST_GIFT,
44+
LootTable.lootTable()
45+
.withPool(
46+
LootPool.lootPool()
47+
.setRolls(ConstantValue.exactly(1.0F))
48+
.add(LootItem.lootTableItem(MIItem.STEEL_UPGRADE))
49+
.add(LootItem.lootTableItem(MIItem.PISTON))
50+
.add(LootItem.lootTableItem(MIItem.ROBOT_ARM))
51+
.add(LootItem.lootTableItem(MIBlock.BASIC_MACHINE_HULL))
52+
.add(LootItem.lootTableItem(MIMaterials.BRONZE.getPart(MIParts.DRILL)))
53+
.add(LootItem.lootTableItem(MIMaterials.STEEL.getPart(MIParts.DRILL)))));
54+
}
55+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* MIT License
3+
*
4+
* Copyright (c) 2020 Azercoco & Technici4n
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
package aztech.modern_industrialization.datagen.loot;
25+
26+
import aztech.modern_industrialization.MI;
27+
import net.minecraft.core.registries.Registries;
28+
import net.minecraft.resources.ResourceKey;
29+
import net.minecraft.world.level.storage.loot.LootTable;
30+
31+
public final class MILootTables {
32+
private MILootTables() {
33+
}
34+
35+
public static final ResourceKey<LootTable> INDUSTRIALIST_GIFT = ResourceKey.create(Registries.LOOT_TABLE,
36+
MI.id("gameplay/hero_of_the_village/industrialist_gift"));
37+
}

0 commit comments

Comments
 (0)