Bug] Canaplia : les graines perdent leur variante et deviennent du chanvre commun #123

Closed
opened 2026-08-31 09:04:37 +00:00 by koka · 0 comments
Owner

Symptôme

Planter une graine Canaplia d’une variante autre que la variante commune produit malgré tout un plant de chanvre commun.

La variante est alors perdue pendant toute la chaîne de gameplay :

  • la graine plantée devient du chanvre commun ;
  • la culture ne conserve pas la variété d’origine ;
  • les objets récupérés à la récolte ou à la casse correspondent au chanvre commun ;
  • les plants voisins sont interprétés comme des plants communs ;
  • les hybridations deviennent impossibles.

Le comportement attendu est que chacune des seize variantes conserve son identité depuis la graine jusqu’à la récolte et puisse participer aux hybridations prévues.

Reproduction

  1. Obtenir des graines de deux variantes non communes, par exemple Tendre et Olive.
  2. Planter les deux graines sur de la terre labourée.
  3. Faire pousser les plants jusqu’à maturité.
  4. Récolter ou casser les cultures.
  5. Observer la variété des plants et des objets récupérés.
  6. Recommencer avec deux parents remplissant les conditions d’une hybridation.

Résultat actuel : les plants et leurs produits deviennent du chanvre commun, donc aucun croisement valide n’est détecté.

Résultat attendu : chaque plant conserve sa variante et le couple Tendre + Olive peut notamment produire la variante Dorée selon les règles et probabilités prévues.

Contexte

  • Version du pack : 26.2.0-alpha.224
  • Module concerné : itsalive
  • Namespace concerné : canaplia
  • Client, serveur ou les deux : logique autoritaire serveur, résultat visible côté client
  • Solo ou multijoueur : vérifier les deux
  • Nouvelle sauvegarde ou sauvegarde existante : vérifier les deux, sans exiger de nouveau monde

Diagnostics

Canaplia utilise un bloc partagé canaplia:hemp_crop dont la variante est enregistrée dans le blockstate.

Les graines sont des CanapliaVariantBlockItem censés transmettre leur variante au bloc placé. Le bloc possède toutefois common comme état par défaut. La perte semble donc se produire entre l’utilisation de la graine et la création ou la mise à jour effective du plant.

Les tests actuels valident principalement les règles abstraites d’hybridation, mais pas toute la chaîne réelle graine → placement → croissance → rechargement → récolte.

Critères d’acceptation

  • Chacun des seize IDs historiques de graines place un plant avec la bonne propriété variant.
  • La partie haute d’un plant mature reprend exactement la variante de sa partie basse.
  • La croissance naturelle et la poudre d’os ne réinitialisent pas la variante.
  • La variante survit au déchargement du chunk et au redémarrage du serveur.
  • La récolte produit les bourgeons et graines correspondant au plant récolté.
  • La casse d’un plant ne remplace pas silencieusement ses drops par ceux du chanvre commun.
  • Les voisins matures sont lus avec leur véritable variante.
  • Les hybridations existantes fonctionnent de nouveau, notamment Tendre + Olive vers Dorée.
  • Un test de régression couvre la chaîne complète avec plusieurs variantes non communes.
  • Les IDs historiques et les sauvegardes existantes restent compatibles.
  • itsalive_version est incrémentée.
  • ./gradlew :itsalive:check et ./gradlew check réussissent.
## Symptôme Planter une graine Canaplia d’une variante autre que la variante commune produit malgré tout un plant de chanvre commun. La variante est alors perdue pendant toute la chaîne de gameplay : - la graine plantée devient du chanvre commun ; - la culture ne conserve pas la variété d’origine ; - les objets récupérés à la récolte ou à la casse correspondent au chanvre commun ; - les plants voisins sont interprétés comme des plants communs ; - les hybridations deviennent impossibles. Le comportement attendu est que chacune des seize variantes conserve son identité depuis la graine jusqu’à la récolte et puisse participer aux hybridations prévues. ## Reproduction 1. Obtenir des graines de deux variantes non communes, par exemple Tendre et Olive. 2. Planter les deux graines sur de la terre labourée. 3. Faire pousser les plants jusqu’à maturité. 4. Récolter ou casser les cultures. 5. Observer la variété des plants et des objets récupérés. 6. Recommencer avec deux parents remplissant les conditions d’une hybridation. Résultat actuel : les plants et leurs produits deviennent du chanvre commun, donc aucun croisement valide n’est détecté. Résultat attendu : chaque plant conserve sa variante et le couple Tendre + Olive peut notamment produire la variante Dorée selon les règles et probabilités prévues. ## Contexte - Version du pack : `26.2.0-alpha.224` - Module concerné : `itsalive` - Namespace concerné : `canaplia` - Client, serveur ou les deux : logique autoritaire serveur, résultat visible côté client - Solo ou multijoueur : vérifier les deux - Nouvelle sauvegarde ou sauvegarde existante : vérifier les deux, sans exiger de nouveau monde ## Diagnostics Canaplia utilise un bloc partagé `canaplia:hemp_crop` dont la variante est enregistrée dans le blockstate. Les graines sont des `CanapliaVariantBlockItem` censés transmettre leur variante au bloc placé. Le bloc possède toutefois `common` comme état par défaut. La perte semble donc se produire entre l’utilisation de la graine et la création ou la mise à jour effective du plant. Les tests actuels valident principalement les règles abstraites d’hybridation, mais pas toute la chaîne réelle graine → placement → croissance → rechargement → récolte. ## Critères d’acceptation - [ ] Chacun des seize IDs historiques de graines place un plant avec la bonne propriété `variant`. - [ ] La partie haute d’un plant mature reprend exactement la variante de sa partie basse. - [ ] La croissance naturelle et la poudre d’os ne réinitialisent pas la variante. - [ ] La variante survit au déchargement du chunk et au redémarrage du serveur. - [ ] La récolte produit les bourgeons et graines correspondant au plant récolté. - [ ] La casse d’un plant ne remplace pas silencieusement ses drops par ceux du chanvre commun. - [ ] Les voisins matures sont lus avec leur véritable variante. - [ ] Les hybridations existantes fonctionnent de nouveau, notamment Tendre + Olive vers Dorée. - [ ] Un test de régression couvre la chaîne complète avec plusieurs variantes non communes. - [ ] Les IDs historiques et les sauvegardes existantes restent compatibles. - [ ] `itsalive_version` est incrémentée. - [ ] `./gradlew :itsalive:check` et `./gradlew check` réussissent.
koka closed this issue 2026-08-31 09:50:26 +00:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: koka/sanctuary#123