Skip to content

Commit 30bdf24

Browse files
committed
Loot datagen
1 parent a7eff05 commit 30bdf24

File tree

4 files changed

+87
-6
lines changed

4 files changed

+87
-6
lines changed

src/main/java/org/polaris_bear/wild_wind/common/entity/Firefly.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
import software.bernie.geckolib.util.GeckoLibUtil;
3838

3939
public class Firefly extends PathfinderMob implements FlyingAnimal, GeoEntity {
40-
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
41-
private static final EntityDataAccessor<Boolean> roost = SynchedEntityData.defineId(Firefly.class, EntityDataSerializers.BOOLEAN);
40+
private final AnimatableInstanceCache CACHE = GeckoLibUtil.createInstanceCache(this);
41+
private static final EntityDataAccessor<Boolean> ROOST = SynchedEntityData.defineId(Firefly.class, EntityDataSerializers.BOOLEAN);
4242
public Firefly(EntityType<? extends PathfinderMob> type, Level level) {
4343
super(type, level);
4444
this.moveControl = new FlyingMoveControl(this, 20, true);
@@ -47,7 +47,7 @@ public Firefly(EntityType<? extends PathfinderMob> type, Level level) {
4747
@Override
4848
protected void defineSynchedData(SynchedEntityData.Builder builder) {
4949
super.defineSynchedData(builder);
50-
builder.define(roost, false);
50+
builder.define(ROOST, false);
5151
}
5252

5353
@Nullable
@@ -58,11 +58,11 @@ public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstanc
5858
}
5959

6060
public void setRoost(boolean r) {
61-
this.entityData.set(roost, r);
61+
this.entityData.set(ROOST, r);
6262
}
6363

6464
public boolean isRoost() {
65-
return this.entityData.get(roost);
65+
return this.entityData.get(ROOST);
6666
}
6767

6868

@@ -173,6 +173,6 @@ private PlayState handle(AnimationState<Firefly> fireflyAnimationState) {
173173
*/
174174
@Override
175175
public AnimatableInstanceCache getAnimatableInstanceCache() {
176-
return cache;
176+
return CACHE;
177177
}
178178
}

src/main/java/org/polaris_bear/wild_wind/datagen/ModDataGenerator.java

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.polaris_bear.wild_wind.WildWindMod;
77
import org.polaris_bear.wild_wind.datagen.lang.ModLangProviderEn;
88
import org.polaris_bear.wild_wind.datagen.lang.ModLangProviderZh;
9+
import org.polaris_bear.wild_wind.datagen.loot.ModLootTableProvider;
910

1011
@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = WildWindMod.MOD_ID)
1112
public class ModDataGenerator {
@@ -21,5 +22,6 @@ public static void gatherData(GatherDataEvent event) {
2122
gen.addProvider(event.includeClient(), new ModItemModelProvider(pack, helper));
2223
gen.addProvider(event.includeServer(), new ModEntityTypeTagsProvider(pack, provider, helper));
2324
gen.addProvider(event.includeServer(), new ModBlockTagsProvider(pack, provider, helper));
25+
gen.addProvider(event.includeServer(), new ModLootTableProvider(pack, provider));
2426
}
2527
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package org.polaris_bear.wild_wind.datagen.loot;
2+
3+
import net.minecraft.core.HolderLookup;
4+
import net.minecraft.data.loot.EntityLootSubProvider;
5+
import net.minecraft.world.entity.EntityType;
6+
import net.minecraft.world.flag.FeatureFlags;
7+
import net.minecraft.world.item.Items;
8+
import net.minecraft.world.level.storage.loot.LootPool;
9+
import net.minecraft.world.level.storage.loot.LootTable;
10+
import net.minecraft.world.level.storage.loot.entries.LootItem;
11+
import net.minecraft.world.level.storage.loot.functions.SmeltItemFunction;
12+
import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition;
13+
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
14+
import net.neoforged.neoforge.registries.DeferredHolder;
15+
import org.polaris_bear.wild_wind.common.init.ModEntities;
16+
17+
import java.util.stream.Stream;
18+
19+
public class ModEntityLoot extends EntityLootSubProvider {
20+
21+
public ModEntityLoot(HolderLookup.Provider registries) {
22+
super(FeatureFlags.REGISTRY.allFlags(), registries);
23+
}
24+
25+
@Override
26+
public void generate() {
27+
this.add(
28+
ModEntities.FIREFLY.get(),
29+
LootTable.lootTable()
30+
.withPool(
31+
LootPool.lootPool()
32+
.setRolls(ConstantValue.exactly(1.0F))
33+
.add(LootItem.lootTableItem(Items.COD).apply(SmeltItemFunction.smelted().when(this.shouldSmeltLoot())))
34+
)
35+
.withPool(
36+
LootPool.lootPool()
37+
.setRolls(ConstantValue.exactly(1.0F))
38+
.add(LootItem.lootTableItem(Items.BONE_MEAL))
39+
.when(LootItemRandomChanceCondition.randomChance(0.05F))
40+
)
41+
);
42+
}
43+
44+
@Override
45+
protected Stream<EntityType<?>> getKnownEntityTypes() {
46+
return ModEntities.ENTITIES.getEntries().stream().map(DeferredHolder::get);
47+
}
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.polaris_bear.wild_wind.datagen.loot;
2+
3+
import net.minecraft.core.HolderLookup;
4+
import net.minecraft.core.WritableRegistry;
5+
import net.minecraft.data.PackOutput;
6+
import net.minecraft.data.loot.LootTableProvider;
7+
import net.minecraft.util.ProblemReporter;
8+
import net.minecraft.world.level.storage.loot.LootTable;
9+
import net.minecraft.world.level.storage.loot.ValidationContext;
10+
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
11+
12+
import java.util.List;
13+
import java.util.Set;
14+
import java.util.concurrent.CompletableFuture;
15+
16+
public class ModLootTableProvider extends LootTableProvider {
17+
18+
public ModLootTableProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
19+
super(output, Set.of(), subProviderEntries(), registries);
20+
}
21+
22+
static List<SubProviderEntry> subProviderEntries() {
23+
return List.of(
24+
new SubProviderEntry(ModEntityLoot::new, LootContextParamSets.ENTITY)
25+
);
26+
}
27+
28+
@Override
29+
protected void validate(WritableRegistry<LootTable> writableregistry, ValidationContext validationcontext, ProblemReporter.Collector problemreporter$collector) {
30+
}
31+
}

0 commit comments

Comments
 (0)