Bloc sans item associé



  • Salut !

    J'ai un bloc qui n'a pas d'item associé, comment j'enregistre son model ?
    J'ai essayé ça mais ça ne marche pas :

    // Dans la class du bloc
    
    StateMapperBase customStateMapper = new StateMapperBase() {
    @Override
    protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
    int meta = getMetaFromState(state);
    return new ModelResourceLocation(getModelName(meta));
    }
    );
    ModelLoader.setCustomStateMapper(this, customStateMapper);
    
    

  • Administrateurs

    Heu ? Un bloc a forcement un item associé que tu peux obtenir avec Item.getItemFromBlock(block)



  • En fait c'est un peu compliqué parce-que j'ai des boutons avec variantes (type de pierre) et je créé une instance par face au lieu d'avoir une propriété "facing" comme le bouton classique, comme ça ça me bouffe pas tout les metadatas que je peux utiliser pour 8 variantes + un boolean "powered".
    Donc j'ai une class pour le bloc avec du coup un champ EnumFacing et je créé 6 instances (une pour chaque facing). Après j'ai un item qui me pose le bon bouton en fonction de son meta.
    En fait c'est presque le même système que vanilla mais je peux pas utilisé le ItemBlock normal dans ce cas, parce que mon item de bouton peut placer les 6 instances.


  • Administrateurs

    Où est le problème ? S tu n'as jamais le bloc dans l'inventaire il est inutile d'enregistrer quelque chose.



  • Les items de bouton ont fonctionnent et on un model, mais les blocs n'en ont pas



  • Le problème c'est que les messages de type "Model definition for location xxx not found" me remplissent la console donc je peux plus débugger en affichant des trucs, comme les noms de model justement. J'utilise eclipse quelqu'un à une idée pour enlever ces messages ?


  • Administrateurs

    Il faut passer par le json qui est dans le dossier blockstate.



  • Voici un exemple de blockstate (igneous_stone_button_down), du coup il y a aussi une version up, west, east … avec les angles qui changent c'est tout

    {
       "variants": {
           "powered=false,igneous_type=red_granite": { "model": "red_granite_stone_button", "x": 180 },
           "powered=false,igneous_type=black_granite": { "model": "black_granite_stone_button", "x": 180 },
           "powered=false,igneous_type=rhyolite": { "model": "rhyolite_stone_button", "x": 180 },
           "powered=false,igneous_type=andesite": { "model": "andesite_stone_button", "x": 180 },
           "powered=false,igneous_type=gabbro": { "model": "gabbro_stone_button", "x": 180 },
           "powered=false,igneous_type=basalt": { "model": "basalt_stone_button", "x": 180 },
           "powered=false,igneous_type=komatiite": { "model": "komatiite_stone_button", "x": 180 },
           "powered=false,igneous_type=dacite": { "model": "dacite_stone_button", "x": 180 },
           "powered=true,igneous_type=red_granite": { "model": "red_granite_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=black_granite": { "model": "black_granite_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=rhyolite": { "model": "rhyolite_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=andesite": { "model": "andesite_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=gabbro": { "model": "gabbro_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=basalt": { "model": "basalt_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=komatiite": { "model": "komatiite_stone_button_pressed", "x": 180 },
           "powered=true,igneous_type=dacite": { "model": "dacite_stone_button_pressed", "x": 180 }
       }
    }
    

    Je pense pas que les fichiers blockstate ou model soit le probleme, j'ai des model not found dans les logs fml à chaque lancement


  • Administrateurs

    Et en jeu pas de modèle ?
    Envoies les logs.



  • Non pas de modèle pour les blocs posé

    [FML]: Model definition for location undergroundbiomes:metamorphic_stone_button_west#metamorphic_type=marble,powered=true not found
    [FML]: Model definition for location undergroundbiomes:igneous_stone_button_north#igneous_type=basalt,powered=false not found
    [FML]: Model definition for location undergroundbiomes:sedimentary_stone_button_up#powered=false,sedimentary_type=chert not found
    [FML]: Model definition for location undergroundbiomes:sedimentary_stone_button_south#powered=true,sedimentary_type=chert not found
    

    L'ordre des variants est important ? Parce-que dans le blockstate c'est marqué "powered=…,type=..." et la c'est dans l'autre sens


  • Administrateurs

    Voila, les logs te disent tout.
    Il ne trouve pas undergroundbiomes:igneous_stone_button_north#igneous_type=basalt,powered=false, car toi tu as :
    "powered=false,igneous_type=basalt": { "model": "basalt_stone_button", "x": 180 },
    Il faut donc mettre :
    "igneous_type=basalt,powered=false": { "model": "basalt_stone_button", "x": 180 },
    Et oui l'ordre doit être respecté.



  • Ok merci 😉
    C'est parti pour tout remplacer !



  • C'est bizarre, les propriétés sont donc inversées par rapport à ce qu'on met ici :

    @Override
    protected BlockState createBlockState() {
    return new BlockState(this, new IProperty[] { POWERED, baseStone().getVariantProperty() });
    }
    

    Ou c'est juste aléatoire ?



  • J'ai fait un repo github, comme ça c'est plus facile : https://github.com/Spooky4672/UndergroundBiomesConstructs1.8

    J'ai toujours des messages d'erreur dans les logs de fml,  comme celui la :

    Model definition for location undergroundbiomes:igneous_cobble_button_west#igneous_type=rhyolite,powered=false not found
    

    alors que les fichiers sont bon, et dans le code le blockstate est créé dans le bon ordre, alors je sais pas pourquoi il me les cherche a l'envers …


  • Administrateurs

    undergroundbiomes:igneous_cobble_button_west#igneous_type=rhyolite,powered=false not found
    = fichier igneous_cobble_button_west variant igneous_type=rhyolite,powered=false.Le fichier igneous_cobble_button_west.json n'existe pas dans le dossier blockstate de ton repo.



  • Fallait que je prenne le mauvais exemple evidemment, j'ai pas fait les blockstate pour les cobbles mais les stones y sont et ça me fait exactement la même chose



  • Cette fois y'a tout les fichiers blockstate et model, mais de toute facon c'était pas le problème, quand je change l'ordre de propriété (powered, type ou type, powered) dans le code, ça change rien, minecraft cherche toujours des fichier blockstate dans l'ordre (type, powered) et donc ne les trouve pas puisque les fichiers sont écrit dans l'autre sens …

    Est-ce que ça peut etre du au formatage des json ? Ou les parametres d'angle ?


  • Administrateurs

    Aucune idée. J'ai pas encore assez bidouiller avec les blockstates pour connaitre leur comportement.



  • Dans les blockstate, j'avais oublié ça :

    "powered=false,igneous_type=red_granite": { "model": "**undergroundbiomes:**red_granite_cobble_button", "x": 180 }

    Maintenant que j'ai mit ça partout, y'a que les bouton de type sedimentary qui marchent, je doit encore avoir oublié quelque chose c'est sur, surtout que je fait du "chercher/remplacer" avec la commande sed de linux en utilisant les regexp donc c'est vite fait de faire un connerie ^^ Si quelqu'un pouvait m'aider à chercher les erreurs dans les blockstates et/ou model, ça serait sympa 😉
    Allez voir le repo github : https://github.com/Spooky4672/UndergroundBiomesConstructs1.8/tree/master/src/main/resources/assets/undergroundbiomes



  • @'robin4002':

    Et oui l'ordre doit être respecté.

    T'es sur de toi quand tu dit ça ? Parce que je suis passé à autre chose là parce que les boutons ça me saoule ^^, je fait les escaliers , pareil avec variante et dans les logs c'est n'importe quoi, l'ordre des propriétés c'est pas du tout celui que j'ai mis dans le code :

    @Override
    protected BlockState createBlockState() {
    return new BlockState(this, new IProperty[] { baseStone().getVariantProperty(), EAST, NORTH, SOUTH, UP, WEST });
    }
    

    Minecraft cherche dans le désorde et après il dit qu'il trouve pas, évidemment …

    Model definition for location undergroundbiomes:igneous_wall#east=false,igneous_type=gabbro,north=true,south=true,up=false,west=true not found