Skip to content

Commit

Permalink
Address Issue #23 , add Diet integration, comment out Boar finder
Browse files Browse the repository at this point in the history
  • Loading branch information
crispytwig committed Jan 15, 2025
1 parent 2186b6d commit 97d03be
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,9 @@ public void aiStep() {
public SpawnGroupData finalizeSpawn(@NotNull ServerLevelAccessor pLevel, @NotNull DifficultyInstance pDifficulty, @NotNull MobSpawnType pReason, @Nullable SpawnGroupData pSpawnData, @Nullable CompoundTag pDataTag) {
super.finalizeSpawn(pLevel, pDifficulty, pReason, pSpawnData, pDataTag);

/// Testing whether or not Boars spawn at all or if they just can't be found
pLevel.players().forEach(player -> player.sendSystemMessage(Component.literal("Boar has spawned!").withStyle(ChatFormatting.ITALIC)));
this.addEffect(new MobEffectInstance(MobEffects.GLOWING, Integer.MAX_VALUE, 0, false, false));
/// Spawn Testing (saving for the future)
// pLevel.players().forEach(player -> player.sendSystemMessage(Component.literal("Boar has spawned!").withStyle(ChatFormatting.ITALIC)));
// this.addEffect(new MobEffectInstance(MobEffects.GLOWING, Integer.MAX_VALUE, 0, false, false));

return pSpawnData;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.minecraft.world.level.pathfinder.Path;
import net.minecraft.world.level.pathfinder.PathFinder;
import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -22,7 +23,7 @@ public MMPathFinder(NodeEvaluator processor, int maxVisitedNodes) {
}

@Override
public Path findPath(PathNavigationRegion regionIn, Mob mob, Set<BlockPos> targetPositions, float maxRange, int accuracy, float searchDepthMultiplier) {
public Path findPath(@NotNull PathNavigationRegion regionIn, @NotNull Mob mob, @NotNull Set<BlockPos> targetPositions, float maxRange, int accuracy, float searchDepthMultiplier) {
Path path = super.findPath(regionIn, mob, targetPositions, maxRange, accuracy, searchDepthMultiplier);
return path == null ? null : new PatchedPath(path);
}
Expand All @@ -33,7 +34,7 @@ public PatchedPath(Path original) {
}

@Override
public Vec3 getEntityPosAtNode(Entity entity, int index) {
public @NotNull Vec3 getEntityPosAtNode(Entity entity, int index) {
Node point = this.getNode(index);
double d0 = point.x + Mth.floor(entity.getBbWidth() + 1.0F) * 0.5D;
double d1 = point.y;
Expand All @@ -42,7 +43,7 @@ public Vec3 getEntityPosAtNode(Entity entity, int index) {
}

private static List<Node> copyPathPoints(Path original) {
List<Node> points = new ArrayList();
List<Node> points = new ArrayList<>();
for (int i = 0; i < original.getNodeCount(); i++) {
points.add(original.getNode(i));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,43 @@
import com.starfish_studios.naturalist.registry.NaturalistEntityTypes;
import com.starfish_studios.naturalist.registry.forge.NaturalistBiomeModifiers;
import com.starfish_studios.naturalist.registry.forge.NaturalistConfigForge;
import net.minecraft.util.Tuple;
import net.minecraft.world.entity.animal.AbstractFish;
import net.minecraft.world.entity.animal.horse.AbstractHorse;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.food.Foods;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.InterModComms;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent;
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.loading.FMLPaths;
import org.apache.commons.lang3.tuple.ImmutableTriple;
import org.apache.commons.lang3.tuple.Triple;

import java.util.Collections;
import java.util.List;
import java.util.function.BiFunction;

@Mod(Naturalist.MOD_ID)
public class NaturalistForge {

public NaturalistForge() {
Naturalist.init();


FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueue);

ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, NaturalistConfigForge.COMMON_CONFIG, "naturalist.toml");
NaturalistConfigForge.loadConfig(NaturalistConfigForge.COMMON_CONFIG, FMLPaths.CONFIGDIR.get().resolve("naturalist.toml").toString());

Expand All @@ -47,6 +65,30 @@ public NaturalistForge() {
MinecraftForge.EVENT_BUS.register(this);
}

public void enqueue(InterModEnqueueEvent event) {
if (ModList.get().isLoaded("diet")) {
dietIntegration(NaturalistRegistry.DUCK.get(), Foods.CHICKEN);
dietIntegration(NaturalistRegistry.COOKED_DUCK.get(), Foods.COOKED_CHICKEN);
dietIntegration(NaturalistRegistry.VENISON.get(), Foods.BEEF);
dietIntegration(NaturalistRegistry.COOKED_VENISON.get(), Foods.COOKED_BEEF);
dietIntegration(NaturalistRegistry.LIZARD_TAIL.get(), NaturalistRegistry.LIZARD_TAIL.get().getFoodProperties());
dietIntegration(NaturalistRegistry.COOKED_LIZARD_TAIL.get(), NaturalistRegistry.COOKED_LIZARD_TAIL.get().getFoodProperties());
dietIntegration(NaturalistRegistry.CATFISH.get(), Foods.SALMON);
dietIntegration(NaturalistRegistry.COOKED_CATFISH.get(), Foods.COOKED_SALMON);
dietIntegration(NaturalistRegistry.BASS.get(), Foods.COD);
dietIntegration(NaturalistRegistry.COOKED_BASS.get(), Foods.COOKED_COD);
}
}

public static void dietIntegration(Item item, FoodProperties food) {
InterModComms.sendTo("diet", "item",
() -> new Tuple<Item, BiFunction<Player, ItemStack, Triple<List<ItemStack>, Integer, Float>>>(
item,
(player, stack) -> new ImmutableTriple<>(Collections.singletonList(stack), food.getNutrition(), food.getSaturationModifier())
)
);
}

private void setup(final FMLCommonSetupEvent event) {
event.enqueueWork(() -> {
Naturalist.registerBrewingRecipes();
Expand Down

0 comments on commit 97d03be

Please sign in to comment.