feat: penguin spawning?
This commit is contained in:
parent
054ece497f
commit
52af7adaf2
|
@ -1,19 +1,10 @@
|
|||
package me.theclashfruit.arctic;
|
||||
|
||||
import me.theclashfruit.arctic.entity.ModEntities;
|
||||
import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity;
|
||||
import me.theclashfruit.arctic.entity.ArcticEntities;
|
||||
import me.theclashfruit.arctic.item.ArcticItems;
|
||||
import me.theclashfruit.arctic.world.ArcticEntityGeneration;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemGroups;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.item.SpawnEggItem;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -23,33 +14,16 @@ public class Arctic implements ModInitializer {
|
|||
public static final String MOD_ID = "arctic";
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||
|
||||
/* Items */
|
||||
|
||||
public static final Item BABY_EMPEROR_SPAWN_EGG = new SpawnEggItem(
|
||||
ModEntities.BABY_EMPEROR,
|
||||
0xB00B69,
|
||||
0xffffff,
|
||||
new FabricItemSettings().maxCount(1)
|
||||
);
|
||||
|
||||
/**
|
||||
* Runs the mod initializer.
|
||||
*/
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
FabricDefaultAttributeRegistry.register(
|
||||
ModEntities.BABY_EMPEROR,
|
||||
BabyEmperorEntity.createBabyEmperorAttributes()
|
||||
);
|
||||
|
||||
// ------------------------------ //
|
||||
|
||||
Registry.register(Registries.ITEM, new Identifier(MOD_ID, "baby_emperor_spawn_egg"), BABY_EMPEROR_SPAWN_EGG);
|
||||
|
||||
ItemGroupEvents.modifyEntriesEvent(ItemGroups.SPAWN_EGGS).register(content -> {
|
||||
content.addAfter(Items.AXOLOTL_SPAWN_EGG, BABY_EMPEROR_SPAWN_EGG);
|
||||
});
|
||||
|
||||
GeckoLib.initialize();
|
||||
|
||||
ArcticEntities.registerEntities();
|
||||
ArcticItems.registerItems();
|
||||
|
||||
ArcticEntityGeneration.addSpawns();
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package me.theclashfruit.arctic.client;
|
||||
|
||||
import me.theclashfruit.arctic.client.entity.penguin.BabyEmperorRenderer;
|
||||
import me.theclashfruit.arctic.entity.ModEntities;
|
||||
import me.theclashfruit.arctic.entity.ArcticEntities;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
|
||||
|
||||
|
@ -12,7 +12,7 @@ public class ArcticClient implements ClientModInitializer {
|
|||
@Override
|
||||
public void onInitializeClient() {
|
||||
EntityRendererRegistry.register(
|
||||
ModEntities.BABY_EMPEROR,
|
||||
ArcticEntities.BABY_EMPEROR,
|
||||
BabyEmperorRenderer::new
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package me.theclashfruit.arctic.entity;
|
||||
|
||||
import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.entity.EntityDimensions;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import static me.theclashfruit.arctic.Arctic.MOD_ID;
|
||||
|
||||
public class ArcticEntities {
|
||||
public static final EntityType<BabyEmperorEntity> BABY_EMPEROR = FabricEntityTypeBuilder
|
||||
.create(SpawnGroup.CREATURE, BabyEmperorEntity::new)
|
||||
.dimensions(EntityDimensions.fixed(0.8f, 1f))
|
||||
.build();
|
||||
|
||||
public static void registerEntities() {
|
||||
Registry.register(
|
||||
Registries.ENTITY_TYPE,
|
||||
new Identifier(MOD_ID, "baby_emperor"),
|
||||
BABY_EMPEROR
|
||||
);
|
||||
|
||||
FabricDefaultAttributeRegistry.register(
|
||||
ArcticEntities.BABY_EMPEROR,
|
||||
BabyEmperorEntity.createBabyEmperorAttributes()
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
package me.theclashfruit.arctic.entity;
|
||||
|
||||
import me.theclashfruit.arctic.entity.penguin.BabyEmperorEntity;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.entity.EntityDimensions;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import static me.theclashfruit.arctic.Arctic.MOD_ID;
|
||||
|
||||
public class ModEntities {
|
||||
public static final EntityType<BabyEmperorEntity> BABY_EMPEROR = Registry.register(
|
||||
Registries.ENTITY_TYPE,
|
||||
new Identifier(MOD_ID, "baby_emperor"),
|
||||
FabricEntityTypeBuilder.create(SpawnGroup.CREATURE, BabyEmperorEntity::new)
|
||||
.dimensions(EntityDimensions.fixed(0.8f, 1f))
|
||||
.build()
|
||||
);
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
package me.theclashfruit.arctic.entity.penguin;
|
||||
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.ai.goal.SwimGoal;
|
||||
import net.minecraft.entity.ai.goal.WanderAroundGoal;
|
||||
import net.minecraft.entity.ai.goal.*;
|
||||
import net.minecraft.entity.attribute.DefaultAttributeContainer;
|
||||
import net.minecraft.entity.attribute.EntityAttributes;
|
||||
import net.minecraft.entity.passive.AnimalEntity;
|
||||
import net.minecraft.entity.passive.PassiveEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.world.World;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
@ -42,7 +42,10 @@ public class BabyEmperorEntity extends AnimalEntity implements GeoEntity {
|
|||
@Override
|
||||
protected void initGoals() {
|
||||
this.goalSelector.add(0, new SwimGoal(this));
|
||||
this.goalSelector.add(1, new WanderAroundGoal(this, 1.0D));
|
||||
this.goalSelector.add(0, new EscapeDangerGoal(this, 0.65D));
|
||||
this.goalSelector.add(1, new LookAroundGoal(this));
|
||||
this.goalSelector.add(1, new WanderAroundGoal(this, 0.55D));
|
||||
this.goalSelector.add(2, new LookAtEntityGoal(this, PlayerEntity.class, 6.0F));
|
||||
}
|
||||
|
||||
protected <E extends BabyEmperorEntity> PlayState predicate(final AnimationState<E> event) {
|
||||
|
|
31
src/main/java/me/theclashfruit/arctic/item/ArcticItems.java
Normal file
31
src/main/java/me/theclashfruit/arctic/item/ArcticItems.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package me.theclashfruit.arctic.item;
|
||||
|
||||
import me.theclashfruit.arctic.entity.ArcticEntities;
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemGroups;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.item.SpawnEggItem;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import static me.theclashfruit.arctic.Arctic.MOD_ID;
|
||||
|
||||
public class ArcticItems {
|
||||
public static final Item BABY_EMPEROR_SPAWN_EGG = new SpawnEggItem(
|
||||
ArcticEntities.BABY_EMPEROR,
|
||||
0xB00B69,
|
||||
0xffffff,
|
||||
new FabricItemSettings().maxCount(1)
|
||||
);
|
||||
|
||||
public static void registerItems() {
|
||||
Registry.register(Registries.ITEM, new Identifier(MOD_ID, "baby_emperor_spawn_egg"), BABY_EMPEROR_SPAWN_EGG);
|
||||
|
||||
ItemGroupEvents.modifyEntriesEvent(ItemGroups.SPAWN_EGGS).register(content -> {
|
||||
content.addAfter(Items.AXOLOTL_SPAWN_EGG, BABY_EMPEROR_SPAWN_EGG);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package me.theclashfruit.arctic.world;
|
||||
|
||||
import me.theclashfruit.arctic.entity.ArcticEntities;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.entity.SpawnRestriction;
|
||||
import net.minecraft.entity.passive.AnimalEntity;
|
||||
import net.minecraft.world.Heightmap;
|
||||
import net.minecraft.world.biome.BiomeKeys;
|
||||
|
||||
public class ArcticEntityGeneration {
|
||||
public static void addSpawns() {
|
||||
BiomeModifications.addSpawn(
|
||||
BiomeSelectors.includeByKey(
|
||||
BiomeKeys.FROZEN_OCEAN,
|
||||
BiomeKeys.DEEP_FROZEN_OCEAN,
|
||||
BiomeKeys.SNOWY_BEACH
|
||||
),
|
||||
SpawnGroup.CREATURE,
|
||||
ArcticEntities.BABY_EMPEROR,
|
||||
45,
|
||||
3,
|
||||
6
|
||||
);
|
||||
|
||||
SpawnRestriction.register(
|
||||
ArcticEntities.BABY_EMPEROR,
|
||||
SpawnRestriction.Location.NO_RESTRICTIONS,
|
||||
Heightmap.Type.MOTION_BLOCKING_NO_LEAVES,
|
||||
AnimalEntity::isValidNaturalSpawn
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue