Skip to content

Commit 968216d

Browse files
committed
ai注册遍历萤火虫食物tag标签等
1 parent 414f687 commit 968216d

File tree

6 files changed

+69
-13
lines changed

6 files changed

+69
-13
lines changed

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

+15-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.polaris_bear.wild_wind.common.entity;
22

3+
import com.google.common.base.Function;
34
import net.minecraft.core.BlockPos;
45
import net.minecraft.nbt.CompoundTag;
56
import net.minecraft.network.syncher.EntityDataAccessor;
@@ -9,13 +10,11 @@
910
import net.minecraft.world.InteractionHand;
1011
import net.minecraft.world.InteractionResult;
1112
import net.minecraft.world.damagesource.DamageSource;
12-
import net.minecraft.world.entity.EntityType;
13-
import net.minecraft.world.entity.MobSpawnType;
14-
import net.minecraft.world.entity.PathfinderMob;
15-
import net.minecraft.world.entity.SpawnGroupData;
13+
import net.minecraft.world.entity.*;
1614
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
1715
import net.minecraft.world.entity.ai.attributes.Attributes;
1816
import net.minecraft.world.entity.ai.control.FlyingMoveControl;
17+
import net.minecraft.world.entity.ai.goal.Goal;
1918
import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation;
2019
import net.minecraft.world.entity.ai.navigation.PathNavigation;
2120
import net.minecraft.world.entity.ambient.AmbientCreature;
@@ -31,8 +30,11 @@
3130
import software.bernie.geckolib.animatable.GeoEntity;
3231
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
3332
import software.bernie.geckolib.animation.*;
33+
import software.bernie.geckolib.animation.AnimationState;
3434
import software.bernie.geckolib.util.GeckoLibUtil;
3535

36+
import java.util.List;
37+
3638
public class Firefly extends PathfinderMob implements FlyingAnimal, GeoEntity {
3739
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
3840

@@ -135,13 +137,17 @@ public boolean causeFallDamage(float fallDistance, float multiplier, DamageSourc
135137
protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) {
136138

137139
}
138-
140+
public static final List<Function<Firefly, Goal>> FACTORY = List
141+
.of(
142+
FireflyBaseGoal::new,
143+
FireflyFlyGoal::new,
144+
FireflyRoostGoal::new
145+
);
139146
@Override
140147
protected void registerGoals() {
141-
this.goalSelector.addGoal(0, new FireflyBaseGoal(this));
142-
this.goalSelector.addGoal(1, new FireflyRoostGoal(this));
143-
this.goalSelector.addGoal(2, new FireflyFlyGoal(this));
144-
148+
for (int i = 0; i < FACTORY.size(); i++) {
149+
this.goalSelector.addGoal(i, FACTORY.get(i).apply(this));
150+
}
145151
}
146152

147153
@Override

src/main/java/org/polaris_bear/wild_wind/common/init/ModBlockTags.java src/main/java/org/polaris_bear/wild_wind/common/init/tags/ModBlockTags.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.polaris_bear.wild_wind.common.init;
1+
package org.polaris_bear.wild_wind.common.init.tags;
22

33
import net.minecraft.tags.BlockTags;
44
import net.minecraft.tags.TagKey;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.polaris_bear.wild_wind.common.init.tags;
2+
3+
import net.minecraft.tags.BlockTags;
4+
import net.minecraft.tags.ItemTags;
5+
import net.minecraft.tags.TagKey;
6+
import net.minecraft.world.item.Item;
7+
import net.minecraft.world.level.block.Block;
8+
import org.polaris_bear.wild_wind.util.Helpers;
9+
10+
public class ModItemTags {
11+
public static final TagKey<Item> FIREFLY_FOOD = register("flrefly_food");
12+
private static TagKey<Item> register(String name) {
13+
return ItemTags.create(Helpers.location(name));
14+
}
15+
16+
}

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
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.tag.ModBlockTagsProvider;
910
import org.polaris_bear.wild_wind.datagen.tag.ModEntityTypeTagsProvider;
11+
import org.polaris_bear.wild_wind.datagen.tag.ModItemTagsProvider;
1012

1113
@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = WildWindMod.MOD_ID)
1214
public class ModDataGenerator {
@@ -21,7 +23,9 @@ public static void gatherData(GatherDataEvent event) {
2123
gen.addProvider(event.includeClient(), new ModLangProviderZh(pack));
2224
gen.addProvider(event.includeClient(), new ModItemModelProvider(pack, helper));
2325
gen.addProvider(event.includeServer(), new ModEntityTypeTagsProvider(pack, provider, helper));
24-
gen.addProvider(event.includeServer(), new ModBlockTagsProvider(pack, provider, helper));
26+
ModBlockTagsProvider blockTagsProvider = new ModBlockTagsProvider(pack, provider, helper);
27+
gen.addProvider(event.includeServer(), blockTagsProvider);
28+
gen.addProvider(event.includeServer(), new ModItemTagsProvider(pack, provider, blockTagsProvider.contentsGetter(), helper));
2529
gen.addProvider(event.includeServer(), new ModLootTableProvider(pack, provider));
2630
}
2731
}

src/main/java/org/polaris_bear/wild_wind/datagen/ModBlockTagsProvider.java src/main/java/org/polaris_bear/wild_wind/datagen/tag/ModBlockTagsProvider.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.polaris_bear.wild_wind.datagen;
1+
package org.polaris_bear.wild_wind.datagen.tag;
22

33
import net.minecraft.core.HolderLookup;
44
import net.minecraft.data.PackOutput;
@@ -9,7 +9,7 @@
99
import net.neoforged.neoforge.common.data.ExistingFileHelper;
1010
import org.jetbrains.annotations.Nullable;
1111
import org.polaris_bear.wild_wind.WildWindMod;
12-
import org.polaris_bear.wild_wind.common.init.ModBlockTags;
12+
import org.polaris_bear.wild_wind.common.init.tags.ModBlockTags;
1313

1414
import java.util.concurrent.CompletableFuture;
1515

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.polaris_bear.wild_wind.datagen.tag;
2+
3+
import net.minecraft.core.HolderLookup;
4+
import net.minecraft.data.PackOutput;
5+
import net.minecraft.data.tags.ItemTagsProvider;
6+
import net.minecraft.tags.ItemTags;
7+
import net.minecraft.world.item.Item;
8+
import net.minecraft.world.item.Items;
9+
import net.minecraft.world.level.block.Block;
10+
import net.neoforged.neoforge.common.Tags;
11+
import net.neoforged.neoforge.common.data.ExistingFileHelper;
12+
import org.jetbrains.annotations.Nullable;
13+
import org.polaris_bear.wild_wind.WildWindMod;
14+
import org.polaris_bear.wild_wind.common.init.tags.ModItemTags;
15+
16+
import java.util.concurrent.CompletableFuture;
17+
18+
public class ModItemTagsProvider extends ItemTagsProvider {
19+
20+
21+
public ModItemTagsProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, CompletableFuture<TagLookup<Block>> blockTags, @Nullable ExistingFileHelper existingFileHelper) {
22+
super(output, lookupProvider, blockTags, WildWindMod.MOD_ID, existingFileHelper);
23+
}
24+
25+
@Override
26+
protected void addTags(HolderLookup.Provider provider) {
27+
IntrinsicTagAppender<Item> firefly_food = tag(ModItemTags.FIREFLY_FOOD);
28+
firefly_food.add(Items.GLOW_BERRIES, Items.GLOW_LICHEN);
29+
}
30+
}

0 commit comments

Comments
 (0)