mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-21 06:36:25 -04:00
Compare commits
18
Commits
tomfoolery
...
1.7.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a57eee3afc | ||
|
|
57595c999c | ||
|
|
83615b7eb3 | ||
|
|
c53c544a8b | ||
|
|
c7c272c79c | ||
|
|
c759161367 | ||
|
|
19b7b4804f | ||
|
|
3a005cc813 | ||
|
|
a8e16efa48 | ||
|
|
c3ddfce0a7 | ||
|
|
9500f7a1f3 | ||
|
|
83a8d92e3f | ||
|
|
e105c5d4d7 | ||
|
|
3d816f57e2 | ||
|
|
dcc98b4a54 | ||
|
|
d3ce455391 | ||
|
|
956b599060 | ||
|
|
c4d8eae47e |
+32
-42
@@ -1,63 +1,53 @@
|
||||
# Changelog
|
||||
## [1.7.1 (MONTH xth, 2025)](#1-7-1)
|
||||
## [1.7.1 (November 29th, 2025)](#1-7-1)
|
||||
|
||||
### Additions
|
||||
- Added trades for Saccharine Saplings, Hearty Grains, Chipped Pot, and Masterpiece Teacup to the Wandering Trader.
|
||||
- Added brewing recipe for Throat Spray.
|
||||
- Added vanilla sprinting's field of view change to Pokémon land mounts.
|
||||
- Added a customizable keybind for the riding freelook button.
|
||||
- Added double tap to sprint on land mounts.
|
||||
|
||||
### Changes
|
||||
- Converted the riding freelook button to a configurable keybinding.
|
||||
- Made Jet pitch turning 1.5x faster across all Pokémon.
|
||||
- Party Pokémon now attack only mobs that are attacking their owner, instead of randomly targeting unrelated mobs and getting themselves hurt.
|
||||
- Reduced the cost of the Vivichoke Seed trade with the Wandering Trader.
|
||||
- Convert the riding freelook button to a configurable keybinding
|
||||
- Reduced cost of the Vivichoke Seed trade with the Wandering Trader
|
||||
- Add double tap to sprint on land mounts
|
||||
- Add vanilla sprinting fov to pokemon land mounts
|
||||
|
||||
### Fixes
|
||||
- Prevent displaying ride controls overlay to passengers.
|
||||
- Fixed player suffocation on vanilla mounts experienced on some worlds.
|
||||
- Fixed Poké Snack spawning sounds not coming from the block.
|
||||
- Fix player suffocation on vanilla mounts experienced on some worlds.
|
||||
- Stop passengers from hearing the shiny noise of a ridden shiny Pokémon.
|
||||
- Fixed incorrect camera pivot on Bird, Jet, and Dolphin mounts.
|
||||
- Fixed Poké Snack spawning sound positioning.
|
||||
- Ponigiri can no longer be eaten at full hunger.
|
||||
- Medicinal Brew's Campfire Pot recipe now correctly displays that it can be made using an empty glass bottle or a filled bottle.
|
||||
- Fixed a crash when you place a block in the way of hearty grains 2nd block
|
||||
- Fixed a graphics crash that could occur on some machines when campfires were nearby.
|
||||
- Fixed glass bottle not being returned when honey-ing a saccharine leaf block
|
||||
- Fixed Combees not depositing honey upon leaving a hive if they entered with nectar.
|
||||
- Fixed pastured Combees not moving in night or rain.
|
||||
- Fixed incorrect camera pivot on Bird, Jet, and Dolphin mounts, leading to some disorienting riding.
|
||||
- Fixed players suffocating while on vanilla mounts.
|
||||
- Fixed a graphics crash that could occur on some machines when campfire pots were nearby.
|
||||
- Fixed ride controls overlay being displayed to passengers. The passengers probably don't need to know about those.
|
||||
- Fixed mount jumping so that it doesn't switch back to ground animations.
|
||||
- Fixed ridden Pokémon land collision and some issues around stepping up blocks. Land mounts are smoother overall now.
|
||||
- Fixed Furfrou's pink and magenta trims being swapped. Only a man could make that mistake.
|
||||
- Fixed friendship being reset to the default value when evolving a Pokémon.
|
||||
- Fixed Combees not depositing honey upon leaving a hive if they entered it with nectar.
|
||||
- Fixed pastured Combees not moving during the night or in rain.
|
||||
- Fixed a case in which a Combee might try to path to a flower that no longer exists.
|
||||
- Fixed Combees attempting to enter a full hive.
|
||||
- Fixed a crash involving Combees and hives.
|
||||
- Fixed crashing and rendering issues when opening a PC box with certain wallpapers.
|
||||
- Fixed a crash involving Combees and hives. 500 bee bugs. Bugged bees? We can be bees. Mark, this is good news.
|
||||
- Fixed a crash related to NPC navigation.
|
||||
- Fixed a crash when opening a PC box with certain wallpapers while using *VulkanMod*.
|
||||
- Fixed a glitch where friendship would reset to the default value when evolving a Pokémon.
|
||||
- Fixed a crashed related to NPC navigation.
|
||||
- Fix player suffocation on vanilla mounts experienced on some worlds.
|
||||
- Stop passengers from hearing the shiny noise of a ridden shiny Pokémon.
|
||||
- Fixed friendship resetting to the default value when evolving a Pokémon.
|
||||
- Fixed a bunch of incompatibilities with NeoForge mods
|
||||
- Fixed a bug where wind charges hitting pasture blocks would recall all pokémon in it.
|
||||
- Home on the Range advancement shouldn't trigger when opening the Pokemon Menu (shift interact one, mr changelog guy)
|
||||
- Recipes using concrete should now work on NeoForge
|
||||
- Fixed saccharine hanging signs sometimes dropping their oak wood counterpart when being broken
|
||||
- Fix player suffocation on vanilla mounts experienced on some worlds
|
||||
- Stop passengers from hearing the shiny noise of a ridden shiny pokemon
|
||||
- Ponigiri can no longer be eaten at full hunger
|
||||
- Medicinal Brew's Campfire Pot recipe now correctly displays that it can be made using an empty glass bottle or a filled bottle
|
||||
- Fix incorrect camera pivot on Bird, Jet, and Dolphin mounts.
|
||||
- Fix mount jumping so it doesn't switch back to ground animations
|
||||
- Fix ridden pokemon land collision and weird step up issues. Land mounts are smoother overall now.
|
||||
- Fixed Boltund's model
|
||||
- Fixed Cyclizar's textures
|
||||
- Fixed Furfrou's pink and magenta trims being swapped
|
||||
- Fixed a crash when you place a block in the way of hearty grains 2nd block.
|
||||
- Fixed passengers hearing the shiny noise of a ridden shiny Pokémon.
|
||||
- Ponigiri can no longer be eaten at full hunger.
|
||||
- Fixed Poké Snack spawning sounds not coming from the block.
|
||||
- Medicinal Brew's Campfire Pot recipe now correctly displays that it can be made using an empty glass bottle or a filled bottle.
|
||||
- Fixed glass bottle not being returned when slathering honey on a saccharine leaf block.
|
||||
- Fixed saccharine hanging signs sometimes dropping their oak wood counterpart when being broken.
|
||||
- Fixed a bunch of incompatibilities with NeoForge mods.
|
||||
- Fixed a bug where wind charges hitting pasture blocks would recall all Pokémon in it.
|
||||
- Fixed the Home on the Range advancement triggering when opening the Pokémon interaction wheel.
|
||||
- Fixed recipes that use concrete not working on NeoForge.
|
||||
- Fixed Boltund's model.
|
||||
- Fixed Cyclizar's textures.
|
||||
|
||||
### Developer
|
||||
|
||||
### Molang & Datapacks
|
||||
- Removed automatic generation of PC wallpaper screen glow if no asset is provided; it is now optional.
|
||||
- This is because there's no practical way to do this without blowing up things like *VulkanMod*.
|
||||
|
||||
### Particles
|
||||
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.api.ai.config.task
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonMemories
|
||||
import com.cobblemon.mod.common.api.ai.BehaviourConfigurationContext
|
||||
import com.cobblemon.mod.common.api.ai.WrapperLivingEntityTask
|
||||
import com.cobblemon.mod.common.api.npc.configuration.MoLangConfigVariable
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.entity.pokemon.ai.tasks.DefendOwnerTask
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.behavior.BehaviorControl
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
|
||||
class DefendOwnerTaskConfig : SingleTaskConfig {
|
||||
|
||||
override fun getVariables(
|
||||
entity: LivingEntity,
|
||||
behaviourConfigurationContext: BehaviourConfigurationContext
|
||||
): List<MoLangConfigVariable> {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
override fun createTask(
|
||||
entity: LivingEntity,
|
||||
behaviourConfigurationContext: BehaviourConfigurationContext
|
||||
): BehaviorControl<in LivingEntity>? {
|
||||
behaviourConfigurationContext.addMemories(
|
||||
MemoryModuleType.ATTACK_TARGET,
|
||||
CobblemonMemories.NEAREST_VISIBLE_ATTACKER,
|
||||
)
|
||||
|
||||
return WrapperLivingEntityTask(
|
||||
DefendOwnerTask.create(),
|
||||
PokemonEntity::class.java
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -105,6 +105,7 @@ interface TaskConfig {
|
||||
cobblemonResource("go_to_land") to GoToLandTaskConfig::class.java,
|
||||
cobblemonResource("manage_flight_in_battle") to ManageFlightInBattleTaskConfig::class.java,
|
||||
cobblemonResource("attack_hostile_mobs") to AttackHostileMobsTaskConfig::class.java,
|
||||
cobblemonResource("defend_owner") to DefendOwnerTaskConfig::class.java,
|
||||
cobblemonResource("move_to_sweet_berry_bush") to MoveToSweetBerryBushTaskConfig::class.java,
|
||||
cobblemonResource("stop_moving_to_sweet_berry_bush") to StopTryingToReachSweetBerryBushTaskConfig::class.java,
|
||||
cobblemonResource("harvest_sweet_berry_bush") to HarvestSweetBerryBushTaskConfig::class.java,
|
||||
|
||||
+1
-1
@@ -322,7 +322,7 @@ class JetBehaviour : RidingBehaviour<JetSettings, JetState> {
|
||||
val pitchRot = handling * state.currMouseYForce.get()
|
||||
|
||||
// Roll
|
||||
val rollRot = handling * 1.5 * state.currMouseXForce.get()
|
||||
val rollRot = handling * state.currMouseXForce.get()
|
||||
|
||||
val mouseRotation = Vec3(0.0, pitchRot, rollRot)
|
||||
|
||||
|
||||
+14
-2
@@ -10,8 +10,11 @@ package com.cobblemon.mod.common.entity.pokemon.ai.sensors
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonMemories
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.util.getMemorySafely
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.Mob
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
import net.minecraft.world.entity.ai.memory.NearestVisibleLivingEntities
|
||||
import net.minecraft.world.entity.ai.sensing.Sensor
|
||||
@@ -28,8 +31,17 @@ class DefendOwnerSensor : Sensor<PokemonEntity>(10) {
|
||||
}
|
||||
|
||||
private fun setNearestAttacker(entity: PokemonEntity, visibleMobs: NearestVisibleLivingEntities, owner: LivingEntity) {
|
||||
val nearestAttacker = visibleMobs.findClosest { mob ->
|
||||
mob.lastHurtMob == owner
|
||||
val nearestAttacker = visibleMobs.findClosest { livingEntity ->
|
||||
// Prevents Pokémons from attacking players as owned Pokémons are currently invulnerable
|
||||
if (livingEntity is ServerPlayer) return@findClosest false
|
||||
|
||||
if (livingEntity.lastHurtMob == owner) return@findClosest true
|
||||
if (livingEntity is Mob && livingEntity.target == owner) return@findClosest true
|
||||
|
||||
val mobAttackTarget = livingEntity.brain.getMemorySafely(MemoryModuleType.ATTACK_TARGET)
|
||||
if (mobAttackTarget.isPresent && mobAttackTarget.get() == owner) return@findClosest true
|
||||
|
||||
return@findClosest false
|
||||
}.map { mob -> mob as LivingEntity }
|
||||
|
||||
entity.brain.setMemory(CobblemonMemories.NEAREST_VISIBLE_ATTACKER, nearestAttacker)
|
||||
|
||||
-8
@@ -10,18 +10,10 @@ package com.cobblemon.mod.common.entity.pokemon.ai.tasks
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonMemories
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.google.common.collect.ImmutableMap
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes
|
||||
import net.minecraft.world.entity.ai.behavior.Behavior
|
||||
import net.minecraft.world.entity.ai.behavior.OneShot
|
||||
import net.minecraft.world.entity.ai.behavior.declarative.BehaviorBuilder
|
||||
import net.minecraft.world.entity.ai.behavior.declarative.Trigger
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
import net.minecraft.world.entity.ai.memory.MemoryStatus
|
||||
import net.minecraft.world.entity.ai.memory.WalkTarget
|
||||
import net.minecraft.world.entity.ai.targeting.TargetingConditions
|
||||
|
||||
object DefendOwnerTask {
|
||||
fun create(): OneShot<PokemonEntity> {
|
||||
|
||||
+8
@@ -299,6 +299,14 @@
|
||||
"rotation": [0, 0, 15]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.eelektrik.cry": {
|
||||
"animation_length": 1.25,
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.eelektrik.cry"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
@@ -869,6 +869,14 @@
|
||||
"position": [-0.1, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.eelektross.cry": {
|
||||
"animation_length": 1.25,
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.eelektross.cry"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -486,7 +486,7 @@
|
||||
"parent": "eye_left",
|
||||
"pivot": [4.2, 34.1, -10.53],
|
||||
"cubes": [
|
||||
{"origin": [4.98, 34, -10.53], "size": [3, 1, 1], "inflate": 0.01, "uv": [132, 116]}
|
||||
{"origin": [4.98, 34.01, -10.53], "size": [3, 1, 1], "inflate": 0.01, "uv": [132, 116]}
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -782,7 +782,7 @@
|
||||
"parent": "eye_right",
|
||||
"pivot": [-4.2, 34.1, -10.53],
|
||||
"cubes": [
|
||||
{"origin": [-7.98, 34, -10.53], "size": [3, 1, 1], "inflate": 0.01, "uv": [140, 116]}
|
||||
{"origin": [-7.98, 34.01, -10.53], "size": [3, 1, 1], "inflate": 0.01, "uv": [140, 116]}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -3847,6 +3847,9 @@
|
||||
"cobblemon.behaviour.attack_hostile_mobs.name": "Attacks Hostile Mobs",
|
||||
"cobblemon.behaviour.attack_hostile_mobs.desc": "Attacks hostile mobs that are nearby, even if unprovoked.",
|
||||
|
||||
"cobblemon.behaviour.defend_owner.name": "Defend Owner",
|
||||
"cobblemon.behaviour.defend_owner.desc": "Defends its owner when they are attacked.",
|
||||
|
||||
"cobblemon.behaviour.pokemon_bee.name": "Pollinates Flowers",
|
||||
"cobblemon.behaviour.pokemon_bee.desc": "Pollinates flowers and adds honey to hives and Saccharine tree leaves.",
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "cobblemon.behaviour.defend_owner.name",
|
||||
"description": "cobblemon.behaviour.defend_owner.desc",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "add_tasks_to_activity",
|
||||
"activity": "core",
|
||||
"tasksByPriority": {
|
||||
"0": [
|
||||
"defend_owner"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "add_tasks_to_activity",
|
||||
"activity": "idle",
|
||||
"tasksByPriority": {
|
||||
"1": [
|
||||
"switch_to_fight"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "add_tasks_to_activity",
|
||||
"activity": "fight",
|
||||
"tasksByPriority": {
|
||||
"3": [
|
||||
"switch_from_fight"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+19
-3
@@ -17,10 +17,26 @@
|
||||
},
|
||||
{
|
||||
"type": "apply_behaviours",
|
||||
"condition": "!q.entity.is_wild && (q.entity.is_pastured && q.entity.pasture_conflict_enabled == 1) || (q.entity.is_in_party && q.entity.behaviour.combat.will_defend_owner)",
|
||||
"condition": "!q.entity.is_wild && (q.entity.is_pastured && q.entity.pasture_conflict_enabled == 1)",
|
||||
"behaviours": [
|
||||
"cobblemon:attack_hostile_mobs",
|
||||
"cobblemon:fights_melee"
|
||||
"cobblemon:attack_hostile_mobs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "apply_behaviours",
|
||||
"condition": "!q.entity.is_wild && q.entity.is_in_party && q.entity.behaviour.combat.will_defend_owner",
|
||||
"behaviours": [
|
||||
"cobblemon:defend_owner"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "add_memories_and_sensors",
|
||||
"condition": "!q.entity.is_wild && q.entity.is_in_party && q.entity.behaviour.combat.will_defend_owner",
|
||||
"memories": [
|
||||
"cobblemon:nearest_visible_attacker"
|
||||
],
|
||||
"sensors": [
|
||||
"cobblemon:pokemon_owner_under_attack"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"deccelRate": "0.005",
|
||||
"minSpeedFactor": "0.50",
|
||||
"handlingYawExpr": "q.get_ride_stats('SKILL', 'AIR', 50.0, 25.0)",
|
||||
"handlingExpr": "q.get_ride_stats('SKILL', 'AIR', 80.0, 10.0)",
|
||||
"handlingExpr": "q.get_ride_stats('SKILL', 'AIR', 120.0, 15.0)",
|
||||
"speedExpr": "q.get_ride_stats('SPEED', 'AIR', 24.0, 4.0)",
|
||||
"accelerationExpr": "q.get_ride_stats('ACCELERATION', 'AIR', 2.0, 8.0)",
|
||||
"jumpExpr": "q.get_ride_stats('JUMP', 'AIR', 2.0, 1.0)",
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -41,6 +46,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -78,6 +88,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -41,6 +46,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -78,6 +88,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -24,6 +24,11 @@
|
||||
"neededNearbyBlocks": [
|
||||
"minecraft:water"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -81,6 +86,11 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxY": 32
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
+1
-1
@@ -14,6 +14,6 @@ java_version = 21
|
||||
|
||||
mod_id=cobblemon
|
||||
mod_version=1.7.1
|
||||
snapshot=true
|
||||
snapshot=false
|
||||
|
||||
fabric.loom.multiProjectOptimisation=false
|
||||
Reference in New Issue
Block a user