Skip to content

Commit

Permalink
Manta ray stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
MysticKoko committed Jun 20, 2024
1 parent cf5033d commit e3ae6d8
Show file tree
Hide file tree
Showing 19 changed files with 322 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dev.hybridlabs.aquatic.client.model.entity.fish

import dev.hybridlabs.aquatic.entity.fish.HybridAquaticFishEntity

class MantaRayEntityModel : HybridAquaticFishEntityModel<HybridAquaticFishEntity>("manta_ray")
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ object HybridAquaticEntityRenderers {
val DISCUS = EntityRendererRegistry.register(HybridAquaticEntityTypes.DISCUS, ::DiscusEntityRenderer)
val SURGEONFISH = EntityRendererRegistry.register(HybridAquaticEntityTypes.SURGEONFISH, ::SurgeonfishEntityRenderer)
val STINGRAY = EntityRendererRegistry.register(HybridAquaticEntityTypes.STINGRAY, ::StingrayEntityRenderer)
val MANTA_RAY = EntityRendererRegistry.register(HybridAquaticEntityTypes.MANTA_RAY, ::MantaRayEntityRenderer)

//endregion

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.hybridlabs.aquatic.client.render.entity.fish

import dev.hybridlabs.aquatic.client.model.entity.fish.MantaRayEntityModel
import dev.hybridlabs.aquatic.entity.fish.HybridAquaticFishEntity
import net.minecraft.client.render.entity.EntityRendererFactory.Context

class MantaRayEntityRenderer(context: Context) : HybridAquaticFishEntityRenderer<HybridAquaticFishEntity>(context, MantaRayEntityModel(), true, false)
6 changes: 4 additions & 2 deletions src/generated/resources/assets/hybrid-aquatic/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
"entity.hybrid-aquatic.lions_mane_jellyfish": "Lion's Mane Jellyfish",
"entity.hybrid-aquatic.lobster": "Lobster",
"entity.hybrid-aquatic.mahimahi": "Mahi Mahi",
"entity.hybrid-aquatic.manta_ray": "Manta Ray",
"entity.hybrid-aquatic.mauve_stinger": "Mauve Stinger",
"entity.hybrid-aquatic.moon_jellyfish": "Moon Jellyfish",
"entity.hybrid-aquatic.moray_eel": "Moray Eel",
Expand All @@ -140,7 +141,7 @@
"entity.hybrid-aquatic.shrimp": "Shrimp",
"entity.hybrid-aquatic.spider_crab": "Spider Crab",
"entity.hybrid-aquatic.starfish": "Starfish",
"entity.hybrid-aquatic.stingray": "Blue Spotted Stingray",
"entity.hybrid-aquatic.stingray": "Stingray",
"entity.hybrid-aquatic.stonefish": "Stonefish",
"entity.hybrid-aquatic.sunfish": "Sunfish",
"entity.hybrid-aquatic.surgeonfish": "Surgeonfish",
Expand Down Expand Up @@ -261,6 +262,7 @@
"item.hybrid-aquatic.mahimahi_spawn_egg": "Mahi Mahi Spawn Egg",
"item.hybrid-aquatic.manglerfish_fin": "Manglerfish Fin",
"item.hybrid-aquatic.manglerfish_lure": "Manglerfish Lure",
"item.hybrid-aquatic.manta_ray_spawn_egg": "Manta Ray Spawn Egg",
"item.hybrid-aquatic.mauve_stinger_spawn_egg": "Mauve Stinger Spawn Egg",
"item.hybrid-aquatic.moon_jellyfish_hat": "Moon Jellyfish Hat",
"item.hybrid-aquatic.moon_jellyfish_hat.description": "Made by Jakotens",
Expand Down Expand Up @@ -305,7 +307,7 @@
"item.hybrid-aquatic.spider_crab_spawn_egg": "Spider Crab Spawn Egg",
"item.hybrid-aquatic.sponge_chunk": "Sponge Chunk",
"item.hybrid-aquatic.starfish_spawn_egg": "Starfish Spawn Egg",
"item.hybrid-aquatic.stingray_spawn_egg": "Blue Spotted Stingray Spawn Egg",
"item.hybrid-aquatic.stingray_spawn_egg": "Stingray Spawn Egg",
"item.hybrid-aquatic.stonefish_spawn_egg": "Stonefish Spawn Egg",
"item.hybrid-aquatic.sunfish_spawn_egg": "Sunfish Spawn Egg",
"item.hybrid-aquatic.surgeonfish_orangeshoulder": "Orangeshoulder Surgeonfish",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"parent": "minecraft:item/template_spawn_egg"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:deep_lukewarm_ocean",
"minecraft:deep_ocean"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,8 @@ class LanguageProvider(output: FabricDataOutput) : FabricLanguageProvider(output
HybridAquaticEntityTypes.GLOWING_SUCKER_OCTOPUS to "Glowing Sucker Octopus",
HybridAquaticEntityTypes.DISCUS to "Discus",
HybridAquaticEntityTypes.FIREFLY_SQUID to "Firefly Squid",
HybridAquaticEntityTypes.STINGRAY to "Blue Spotted Stingray",
HybridAquaticEntityTypes.STINGRAY to "Stingray",
HybridAquaticEntityTypes.MANTA_RAY to "Manta Ray",
HybridAquaticEntityTypes.SURGEONFISH to "Surgeonfish",
HybridAquaticEntityTypes.BULL_SHARK to "Bull Shark",
HybridAquaticEntityTypes.BASKING_SHARK to "Basking Shark",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ class BiomeTagProvider(output: FabricDataOutput, registriesFuture: CompletableFu
HybridAquaticBiomes.RED_MEADOW
)

getOrCreateTagBuilder(HybridAquaticBiomeTags.MANTA_RAY_SPAWN_BIOMES).add(
BiomeKeys.DEEP_LUKEWARM_OCEAN,
BiomeKeys.DEEP_OCEAN,
)

getOrCreateTagBuilder(HybridAquaticBiomeTags.SURGEONFISH_SPAWN_BIOMES).add(
BiomeKeys.WARM_OCEAN,
BiomeKeys.LUKEWARM_OCEAN,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import dev.hybridlabs.aquatic.entity.critter.StarfishEntity
import dev.hybridlabs.aquatic.entity.crustacean.*
import dev.hybridlabs.aquatic.entity.fish.*
import dev.hybridlabs.aquatic.entity.fish.deepsea.*
import dev.hybridlabs.aquatic.entity.fish.ray.MantaRayEntity
import dev.hybridlabs.aquatic.entity.fish.ray.StingrayEntity
import dev.hybridlabs.aquatic.entity.jellyfish.*
import dev.hybridlabs.aquatic.entity.miniboss.KarkinosEntity
Expand Down Expand Up @@ -52,6 +53,13 @@ object HybridAquaticEntityTypes {
StingrayEntity.createMobAttributes()
)

val MANTA_RAY = registerFish(
"manta_ray",
::MantaRayEntity,
EntityDimensions.fixed(1.0f, 0.3f),
MantaRayEntity.createMobAttributes()
)

val SURGEONFISH = registerFish(
"surgeonfish",
::SurgeonfishEntity,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ object SpawnRestrictionRegistry {
HybridAquaticEntityTypes.SEAHORSE,
HybridAquaticEntityTypes.SUNFISH,
HybridAquaticEntityTypes.STINGRAY,
HybridAquaticEntityTypes.MANTA_RAY,
HybridAquaticEntityTypes.LIONFISH,
HybridAquaticEntityTypes.TOADFISH,
HybridAquaticEntityTypes.OARFISH,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags
import net.minecraft.block.Blocks
import net.minecraft.entity.*
import net.minecraft.entity.ai.control.MoveControl
import net.minecraft.entity.ai.goal.*
import net.minecraft.entity.ai.goal.ActiveTargetGoal
import net.minecraft.entity.ai.goal.EscapeDangerGoal
import net.minecraft.entity.ai.goal.MeleeAttackGoal
import net.minecraft.entity.ai.goal.SwimAroundGoal
import net.minecraft.entity.ai.pathing.EntityNavigation
import net.minecraft.entity.ai.pathing.SwimNavigation
import net.minecraft.entity.attribute.EntityAttributes
Expand All @@ -15,7 +18,6 @@ import net.minecraft.entity.data.DataTracker
import net.minecraft.entity.data.TrackedData
import net.minecraft.entity.data.TrackedDataHandlerRegistry
import net.minecraft.entity.mob.WaterCreatureEntity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.nbt.NbtCompound
import net.minecraft.particle.ParticleTypes
import net.minecraft.registry.tag.FluidTags
Expand Down Expand Up @@ -59,8 +61,6 @@ open class HybridAquaticFishEntity(
goalSelector.add(3, SwimToRandomPlaceGoal(this))
goalSelector.add(3, SwimAroundGoal(this, 0.50, 6))
goalSelector.add(1, EscapeDangerGoal(this, 1.25))
goalSelector.add(1, FleeEntityGoal(this, LivingEntity::class.java, 8.0f, 1.2, 1.0) { !fromFishingNet && it.type.isIn(predator) })
goalSelector.add(1, FleeEntityGoal(this, PlayerEntity::class.java, 5.0f, 1.0, 1.0) { !fromFishingNet })
goalSelector.add(2, AttackGoal(this))
targetSelector.add(2, ActiveTargetGoal(this, LivingEntity::class.java, 10, true, true) { hunger <= 300 && it.type.isIn(prey) })
}
Expand Down Expand Up @@ -105,16 +105,16 @@ open class HybridAquaticFishEntity(
} else {
// Default to a priority based system
val validityFilter = variants.filter { validKeys.contains(it.key) }
if (validityFilter.isNotEmpty()) {
variantKey = if (validityFilter.isNotEmpty()) {
val maxPriority = validityFilter.values.maxOf { it.priority }
val filteredMap = validityFilter.filter { it.value.priority == maxPriority }
if (filteredMap.isNotEmpty()) {
variantKey = filteredMap.keys.random()
filteredMap.keys.random()
} else {
variantKey = validKeys.random()
validKeys.random()
}
} else {
variantKey = validKeys.random()
validKeys.random()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package dev.hybridlabs.aquatic.entity.fish.ray

import dev.hybridlabs.aquatic.tag.HybridAquaticEntityTags
import net.minecraft.entity.EntityType
import net.minecraft.entity.attribute.DefaultAttributeContainer
import net.minecraft.entity.attribute.EntityAttributes
import net.minecraft.entity.mob.WaterCreatureEntity
import net.minecraft.world.World

class MantaRayEntity(entityType: EntityType<out MantaRayEntity>, world: World) :
HybridAquaticRayEntity(entityType, world, emptyMap(),
HybridAquaticEntityTags.STINGRAY_PREY, HybridAquaticEntityTags.STINGRAY_PREDATOR) {

companion object {
fun createMobAttributes(): DefaultAttributeContainer.Builder {
return WaterCreatureEntity.createMobAttributes()
.add(EntityAttributes.GENERIC_MAX_HEALTH, 10.0)
.add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.7)
.add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 2.0)
.add(EntityAttributes.GENERIC_FOLLOW_RANGE, 12.0)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class StingrayEntity(entityType: EntityType<out StingrayEntity>, world: World) :
fun createMobAttributes(): DefaultAttributeContainer.Builder {
return WaterCreatureEntity.createMobAttributes()
.add(EntityAttributes.GENERIC_MAX_HEALTH, 6.0)
.add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.7)
.add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.6)
.add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 2.0)
.add(EntityAttributes.GENERIC_FOLLOW_RANGE, 12.0)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,7 @@ object HybridAquaticItems {
val GOURAMI_SPAWN_EGG = registerSpawnEgg("gourami_spawn_egg", HybridAquaticEntityTypes.GOURAMI, 0x7bb6cf, 0x722a37)
val LIONFISH_SPAWN_EGG = registerSpawnEgg("lionfish_spawn_egg", HybridAquaticEntityTypes.LIONFISH, 0xf9e6cf, 0xc64524)
val MAHIMAHI_SPAWN_EGG = registerSpawnEgg("mahimahi_spawn_egg", HybridAquaticEntityTypes.MAHIMAHI, 0x356c69, 0xd7e482)
val MANTA_RAY_SPAWN_EGG = registerSpawnEgg("manta_ray_spawn_egg", HybridAquaticEntityTypes.MANTA_RAY, 0x000000, 0xFFFFFF)
val MORAY_EEL_SPAWN_EGG = registerSpawnEgg("moray_eel_spawn_egg", HybridAquaticEntityTypes.MORAY_EEL, 0x8da163, 0x1d4435)
val NAUTILUS_SPAWN_EGG = registerSpawnEgg("nautilus_spawn_egg", HybridAquaticEntityTypes.NAUTILUS, 0xd4ccc3, 0xae4635)
val NEEDLEFISH_SPAWN_EGG = registerSpawnEgg("needlefish_spawn_egg", HybridAquaticEntityTypes.NEEDLEFISH, 0xc0e4f7, 0x537da8)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ object HybridAquaticBiomeTags {
val SURGEONFISH_SPAWN_BIOMES = create("surgeonfish_spawn_biomes")
val COWFISH_SPAWN_BIOMES = create("cowfish_spawn_biomes")
val SEAHORSE_SPAWN_BIOMES = create("seahorse_spawn_biomes")

val STINGRAY_SPAWN_BIOMES = create("stingray_spawn_biomes")
val MANTA_RAY_SPAWN_BIOMES = create("manta_ray_spawn_biomes")

val LIONFISH_SPAWN_BIOMES = create("lionfish_spawn_biomes")
val MOON_JELLYFISH_SPAWN_BIOMES = create("moon_jellyfish_spawn_biomes")
val FRIED_EGG_JELLYFISH_SPAWN_BIOMES = create("fried_egg_jellyfish_spawn_biomes")
Expand Down Expand Up @@ -111,7 +114,6 @@ object HybridAquaticBiomeTags {
val FLOATING_SARGASSUM_SPAWN_BIOMES = create("floating_sargassum_spawn_biomes")
val RED_ALGAE_SPAWN_BIOMES = create("red_algae_spawn_biomes")
val RED_ALGAE_MEADOW_SPAWN_BIOMES = create("red_algae_meadow_spawn_biomes")
val GLOWING_PLANKTON_SPAWN_BIOMES = create("glowing_plankton_spawn_biomes")
val DENSE_KELP_WARM_SPAWN_BIOMES = create("dense_kelp_warm_spawn_biomes")
val DENSE_KELP_COLD_SPAWN_BIOMES = create("dense_kelp_cold_spawn_biomes")
val THERMAL_VENT_SPAWN_BIOMES = create("thermal_vent_spawn_biomes")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ object EntityBiomeModifications {
// fish
addFish(HybridAquaticEntityTypes.BETTA, HybridAquaticBiomeTags.BETTA_SPAWN_BIOMES, 1, 1, 1)
addFish(HybridAquaticEntityTypes.STINGRAY, HybridAquaticBiomeTags.STINGRAY_SPAWN_BIOMES, 3, 1, 2)
addFish(HybridAquaticEntityTypes.MANTA_RAY, HybridAquaticBiomeTags.MANTA_RAY_SPAWN_BIOMES, 3, 1, 1)
addFish(HybridAquaticEntityTypes.SURGEONFISH, HybridAquaticBiomeTags.SURGEONFISH_SPAWN_BIOMES, 5, 1, 3)
addFish(HybridAquaticEntityTypes.CLOWNFISH, HybridAquaticBiomeTags.CLOWNFISH_SPAWN_BIOMES, 5, 1, 2)
addFish(HybridAquaticEntityTypes.COWFISH, HybridAquaticBiomeTags.COWFISH_SPAWN_BIOMES, 3, 1, 1)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
{
"format_version": "1.8.0",
"animations": {
"swim": {
"loop": true,
"animation_length": 4,
"bones": {
"body": {
"rotation": {
"vector": ["Math.sin(query.anim_time * 90)*5", 0, 0]
}
},
"tail_1": {
"rotation": {
"vector": ["Math.cos(query.anim_time * 90)*-7.5", 0, 0]
}
},
"tail_2": {
"rotation": {
"vector": ["Math.sin(query.anim_time * 90)*-10", 0, 0]
}
},
"undefined": {
"rotation": {
"vector": ["Math.sin(query.anim_time * 90)*5", 0, 0]
}
},
"left_fin_1": {
"rotation": {
"vector": ["Math.cos(query.anim_time * 90)*7.5", 0, 0]
}
},
"left_fin_tip": {
"rotation": {
"vector": [0, 0, "Math.sin(query.anim_time * 90)*15"]
}
},
"left_fin_2": {
"rotation": {
"vector": ["Math.sin(query.anim_time * 90)*7.5", 0, 0]
}
},
"right_fin_1": {
"rotation": {
"vector": ["Math.cos(query.anim_time * 90)*7.5", 0, 0]
}
},
"right_fin_tip": {
"rotation": {
"vector": [0, 0, "Math.sin(query.anim_time * 90)*-15"]
}
},
"right_fin_2": {
"rotation": {
"vector": ["Math.sin(query.anim_time * 90)*7.5", 0, 0]
}
}
}
},
"idle": {
"loop": true,
"animation_length": 4,
"bones": {
"body": {
"rotation": {
"vector": ["Math.cos(query.anim_time * 90)*2.5", 0, 0]
},
"position": {
"vector": [0, "Math.sin(query.anim_time * 90)*-0.25", 0]
}
},
"tail": {
"rotation": {
"vector": [0, "Math.cos(query.anim_time * 90)*10", 0]
}
},
"leftfin": {
"rotation": {
"vector": [0, 0, "Math.cos(query.anim_time * 90)*-5"]
}
},
"rightfin": {
"rotation": {
"vector": [0, 0, "Math.cos(query.anim_time * 90)*5"]
}
}
}
},
"flop": {
"loop": true,
"animation_length": 2,
"bones": {
"body": {
"rotation": {
"0.0": {
"vector": [2.5, 0, 0]
},
"1.0": {
"vector": [-2.5, 0, 0]
},
"2.0": {
"vector": [2.5, 0, 0]
}
}
},
"tail": {
"rotation": {
"0.0": {
"vector": [-5, 0, 0]
},
"1.0": {
"vector": [0, 0, 0]
},
"2.0": {
"vector": [-5, 0, 0]
}
}
},
"leftfin": {
"rotation": {
"0.0": {
"vector": [2.5, 0, 0]
},
"1.0": {
"vector": [-2.5, 0, 0]
},
"2.0": {
"vector": [2.5, 0, 0]
}
}
},
"rightfin": {
"rotation": {
"0.0": {
"vector": [2.5, 0, 0]
},
"1.0": {
"vector": [-2.5, 0, 0]
},
"2.0": {
"vector": [2.5, 0, 0]
}
}
}
}
}
},
"geckolib_format_version": 2
}
Loading

0 comments on commit e3ae6d8

Please sign in to comment.