Blocs & props
DynamX permet d'ajouter des blocs et des props avec un modèle .obj. Voici un tutoriel complet pour l'ajout de ceux-ci en jeu.
Info
Un prop est un bloc soumis a la physique.
Warning
Il est fortement conseillé d'exporter les modèles via Blender. Les modèles exportés par exemple via BlockBench ne sont pas optimisés et peuvent faire lag.
Préparation du modèle
DynamX offre la possibiliter de créer automatiquement une boite de collision pour chaque object
du fichier obj, cette boîte de collisions servira pour les collisions avec toutes les entités et les autres objets physiques.
Par exemple, si vous découpez votre modèle de cette manière (modèle de table) :
L'algorithme va créer 2 boites de collisions, une pour les pieds et une pour le haut de la table, pensez-y en créant votre modèle (et évitez également de mettre trop d'objects inutiles risquant d'alourdir le bloc/prop).
Exportation des modèles
Exportez le modèle , au format obj, accompagné du .mtl et des .png associés, puis placez les dans un dossier assets/dynamxmod/models/obj/nom_de_votre_bloc(ou_prop)/
de votre pack.
Configuration du bloc (ou prop)
-
Partie commune aux blocs et props
Info
Si vous voulez seulement créer un prop, vous devez d'abord créer le bloc correspondant, vous pourrez ensuite le retirer des creative tabs.
Créez un dossier blocks
à la racine de votre pack puis créez-y un fichier block_votre_block.dynx
.
Warning
Pour être reconnu, le nom du fichier doit commencer par block_
, que ce soit pour faire un bloc et/ou un prop !
Danger
Faites attention aux deux formats de positions utilisés : dans Blender l'axe vertical est l'axe Z, alors que dans Minecraft c'est l'axe Y, de plus l'axe Z de Minecraft est dans le sens inverse (coordonnées multipliées par -1). Nous préciserons quelle format utiliser à chaque fois que c'est nécessaire.
Format Blender : X Y Z
. Format Minecraft : X Z -Y
.
Voici la liste des variables permettant de configurer un bloc.
Info
Le prop configuré à l'aide de ce bloc reprendra les valeurs configurées sur le bloc, sauf pour la creative tab qu'il faudra de nouveau configurer (sauf si vous gardez celle par défaut).
Propriétés obligatoires
Nom | Type | Description | Exemple |
---|---|---|---|
Description | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Lore de l'item | - |
Model | ResourceLocation : chemin vers une ressource au format modid:dossier/ressourse. Par exemple avec dynamxmod:model1/model1.obj , le modèle devra être dans assets/dynamxmod/models/model1/model1.obj |
Chemin du modèle obj | obj/name_of_vehicle/name_of_model.obj |
Name | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Nom de l'objet | - |
Propriétés facultatives
Nom | Type | Description | Valeur par défaut |
---|---|---|---|
CreativeTabName, CreativeTab, TabName | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Crée une nouvelle page dans le menu creatif contenant l'item dans lequel cette propriété a été renseignée, avec le nom défini. None cachera l'item du menu créatif. |
CreativeTab of DynamX |
IconText | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Texte dessiné sur l'icône de l'item dans les menus | Block for blocks, Prop for props |
Item3DRenderLocation | Type de rendu de l'item (NONE ou WORLD ou ALL) | Voir ci-dessous | all |
ItemRotate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la rotation de l'item | 0 0 0 |
ItemScale | Nombre décimal | Scale du rendu de l'item | 0.9 |
ItemTranslate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la translation de l'item | 0 0 0 |
LightLevel | Nombre décimal | Luminosité du bloc, entre 0 et 15 | 0 |
Material | Matériau Minecraft (parmis "AIR", "GRASS", "GROUND", "WOOD", "ROCK", "IRON", "ANVIL", "WATER", "LAVA", "LEAVES", "PLANTS", "VINE", "SPONGE", "CLOTH", "FIRE", "SAND", "CIRCUITS", "CARPET", "GLASS", "REDSTONE_LIGHT", "TNT", "CORAL", "ICE", "PACKED_ICE", "SNOW", "CRAFTED_SNOW", "CACTUS", "CLAY", "GOURD", "DRAGON_EGG", "PORTAL", "CAKE", "WEB", "PISTON", "BARRIER", "STRUCTURE_VOID") | Matériau Minecraft du bloc | ROCK |
RenderDistanceSquared | Nombre décimal | Distance maximale à laquelle le block/prop est rendu, peut affecter les performances | 4096 |
Rotate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la rotation du bloc (ne marche pas sur les props) | 0 0 0 |
Scale | Vecteur comportant 3 axes (X,Y,Z) | Modifie la taille du modèle | 1 1 1 |
Textures | Liste de chaine de caractères acceptants des valeurs en 2 par 2 (Exemple : Valeur1 Valeur2, Valeur3 Valeur4, ...) | Déprécié. Voir configuration du multi-textures. | - |
Translate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la position du modèle | 0 0 0 |
UseComplexCollisions | Valeur pouvant soit activer (True) ou désactiver (False) une propriété | Permet de désactiver la box de collision prenant la forme du modèle 3D : en le mettant sur false, les boites de collisions avec le joueur seront utilisées pour les collisions avec les entités physiques et le terrain. En laissant sur true, le modèle 3D est utilisé pour les collisions, ce qui est plus coûteux en performances. | false |
Info
La traduction du nom du bloc/prop est automatiquement créée avec la valeur de "Name"
-
Configuration du prop
Ajoutez-le code suivant dans le fichier du bloc :
Prop_NomDuProp{
//Configuration du prop ici
}
Info
Le prop est une sous-propriété du bloc dont le nom doit obligatoirement commencer par "Prop".
Voici la liste des variables permettant de configurer un prop.
Info
Les propriétés déjà renseignées dans le bloc sont optionnelles, le prop utilisera la config du bloc (sauf pour la creative tab qu'il faut également configurer dans le prop si vous ne voulez pas utiliser la creative tab par défaut).
Propriétés obligatoires
Nom | Type | Description | Exemple |
---|---|---|---|
CenterOfGravityOffset | Vecteur comportant 3 axes (X,Y,Z) | Centre de gravité du prop (par défaut : position de l'origine du modèle dans Blender). La position est au format Minecraft. A ajuster à l'aide de l'option de debug associée en jeu. | - |
Description | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Lore de l'item | - |
EmptyMass | Nombre entier | Masse du prop (en kg) | - |
Model | ResourceLocation : chemin vers une ressource au format modid:dossier/ressourse. Par exemple avec dynamxmod:model1/model1.obj , le modèle devra être dans assets/dynamxmod/models/model1/model1.obj |
Chemin du modèle obj | obj/name_of_vehicle/name_of_model.obj |
Name | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Nom de l'objet | - |
Propriétés facultatives
Nom | Type | Description | Valeur par défaut |
---|---|---|---|
AngularDamping | Nombre décimal | Atténuation de la vélocité angulaire (résistance de l'air), entre 0 et 1. | 0 |
Bounciness | Nombre décimal | Intensité de l'effet de rebond du props (comme une balle de foot), entre 0 et 1. | 0 |
ContinuousCollisionDetection | Valeur pouvant soit activer (True) ou désactiver (False) une propriété | Active (true) ou non (false) la détection de collsion continue (Très utile pour éviter que les petits objets tombent à travers le sol) | false |
CreativeTabName, CreativeTab, TabName | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Crée une nouvelle page dans le menu creatif contenant l'item dans lequel cette propriété a été renseignée, avec le nom défini. None cachera l'item du menu créatif. |
CreativeTab of DynamX |
DespawnTime | Nombre décimal | Définit le temps de disparition de l'objet en question en ticks (Conseillée pour éviter les lags) | "-1" (disabled) |
Friction | Nombre décimal | Modifie la friction de l'objet | 0.5 |
IconText | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Texte dessiné sur l'icône de l'item dans les menus | Block for blocks, Prop for props |
Item3DRenderLocation | Type de rendu de l'item (NONE ou WORLD ou ALL) | Voir ci-dessous | all |
ItemRotate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la rotation de l'item | 0 0 0 |
ItemScale | Nombre décimal | Scale du rendu de l'item | 0.9 |
ItemTranslate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la translation de l'item | 0 0 0 |
LinearDamping | Nombre décimal | Atténuation de la vélocité linéaire (résistance de l'air), entre 0 et 1. | 0 |
Margin | Nombre décimal | Modifie la marge de détection de collsion d'un objet (Nous vous déconseillons très fortement de modifier cette propriété) | 0.04 |
RenderDistanceSquared | Nombre décimal | Distance maximale à laquelle le block/prop est rendu, peut affecter les performances | 4096 |
Scale | Vecteur comportant 3 axes (X,Y,Z) | Modifie la taille du modèle | 1 1 1 |
SpawnOffset | Vecteur comportant 3 axes (X,Y,Z) | Position à laquelle le prop est placé en utilisant son item | 0 0.65 0 |
Textures | Liste de chaine de caractères acceptants des valeurs en 2 par 2 (Exemple : Valeur1 Valeur2, Valeur3 Valeur4, ...) | Déprécié. Voir configuration du multi-textures. | - |
Translate | Vecteur comportant 3 axes (X,Y,Z) | Modifie la position du modèle | 0 0 0 |
UseComplexCollisions | Valeur pouvant soit activer (True) ou désactiver (False) une propriété | Permet de désactiver la box de collision prenant la forme du modèle 3D : en le mettant sur false, les boites de collisions avec le joueur seront utilisées pour les collisions avec les entités physiques et le terrain. En laissant sur true, le modèle 3D est utilisé pour les collisions, ce qui est plus coûteux en performances. | false |
-
Configuration des variantes de textures
Cette partie est expliquée dans configuration du multi-textures.
-
Fin de la configuration
Pour modifier le rendu de l'item du bloc/prop, rendez-vous ici : configuration des items.
Conclusion
Voilà, vous avez mis votre bloc et/ou prop en jeu, si vous avez d'autres questions, rendez-vous sur le Discord de DynamX ! Vous pouvez aussi ajouter des lumières fonctionnelles sur votre bloc.