Créer un Block similaire au Block Barrier
-
Le truc est que tu as te states différents qui ne sont pas spécifiés dans ton fichier json de blockstates, il faut que tu mettes une ligne pour visible=false et une pour visible=true. (On peut aussi ignorer le state au rendu mais je n’ai pas le code sous la main)
Envoyé via mobile
-
En gros comme a dit Aymeric il faut que ton JSON ressemble à ça :
{ "variants": { "visible=true": { "model": "modid:tonModel" }, "visible=false": { "model": "modid:tonModel" } } }Je ne crois pas m’être trompé, je n’ai pas vérifié mais ça devrait aller
-
Ou alors il faut lui indiquer d’ignorer l’état de bloc visible. Il y a une fonction pour ça mais je ne me souvient pas de son nom.
-
Je crois que c’est ModelLoader.setCustomStateMapper(Block, IStateMapper)
-
@‘BrokenSwing’:
Je crois que c’est ModelLoader.setCustomStateMapper(Block, IStateMapper)
Du coup je fais comme vous pouvez m’expliquer ? par ce que le blockstate je vois pas comment faire du coup ?
parce que pour le visible=false ça marche comment ?
{
“variants”: {
“visible=true”: {
“model”: “adamantium:BlockLumineux”
},
“visible=false”: {
“model”: “???”
}
}
} -
Tu met un bloc avec une texture transparente
-
Normalement la fonction getRenderType permet déjà de ne plus rien rendre si le return est EnumBlockRenderType.INVISIBLE.
-
@‘BrokenSwing’:
Tu met un bloc avec une texture transparente
ça ne marche toujours pas même si je remplace par un block qui est invisible, ça reste la même chose
-
@‘BrokenSwing’:
Tu met un bloc avec une texture transparente
Bon la texture visible apparait mais la invisible ne fonctionne pas donc le block reste toujours visible
-
Il y a bien un changement de state lorsque tu prend le bloc dans tes mains et que tu l’enlève ? Pour tester mais des messages de debug. As-tu des messages d’erreur dans tes logs ?
-
@‘BrokenSwing’:
Il y a bien un changement de state lorsque tu prend le bloc dans tes mains et que tu l’enlève ? Pour tester mais des messages de debug. As-tu des messages d’erreur dans tes logs ?
Non je ne vois pas de changement de state , et toujours des messages de ce genre dans la logs :
[17:15:34] [Client thread/ERROR] [FML]: Exception loading model for variant adamantium:Texture#normal for blockstate “adamantium:Texture”
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model adamantium:Texture#normal with loader VariantLoader.INSTANCE, skipping
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:241) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:145) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:229) ~[ModelLoader.class:?]
at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:146) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:132) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:113) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:799) [Minecraft.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:338) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.startGame(Minecraft.java:561) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:386) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:78) ~[ModelBlockDefinition.class:?]
at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1183) ~[ModelLoader$VariantLoader.class:?]
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
… 24 more -
Tu as un bloc qui s’appelle Texture ?
-
@‘BrokenSwing’:
Tu as un bloc qui s’appelle Texture ?
Euh oui j’ai un Block qui s’appelle Texture c’est pour un test
-
Fait un debug de la fonction getActualState avec des print de partout puis dit-nous ce qui ne va pas
-
Mets ton curseur sur le bloc, appuies sur F3, l’état de bloc visible vaut quelle valeur ?
-
@‘robin4002’:
Mets ton curseur sur le bloc, appuies sur F3, l’état de bloc visible vaut quelle valeur ?
visible : false
-
@‘BrokenSwing’:
Fait un debug de la fonction getActualState avec des print de partout puis dit-nous ce qui ne va pas
Tu veux que je les mettent ou excuse moi je suis assez novice donc me faut un peu d’aide

tient voilà la class
package Blocks; import javax.annotation.Nullable; import fr.jules552.mod.init.BlocksMod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class LumineuxBlock extends Block { public static final PropertyBool VISIBLE = PropertyBool.create("visible"); public LumineuxBlock(Material materialIn) { super(materialIn); this.setBlockUnbreakable(); this.setLightOpacity(0); this.setResistance(6000001.0F); this.translucent = false; } @Nullable public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos) { return NULL_AABB; } @SideOnly(Side.CLIENT) public float getAmbientOcclusionLightValue(IBlockState state) { return 1.0F; } public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) { if (FMLCommonHandler.instance().getSide().isClient()) { return getClientState(state); } return state.withProperty(VISIBLE, Boolean.valueOf(false)); } @SideOnly(Side.CLIENT) private IBlockState getClientState(IBlockState state) { ItemStack stack1 = Minecraft.getMinecraft().thePlayer.getHeldItemMainhand(); ItemStack stack2 = Minecraft.getMinecraft().thePlayer.getHeldItemOffhand(); if ((stack1 != null && stack1.getItem() == Item.getItemFromBlock(this)) || (stack2 != null && stack2.getItem() == Item.getItemFromBlock(this))) { state.withProperty(VISIBLE, Boolean.valueOf(true)); // visible } return state.withProperty(VISIBLE, Boolean.valueOf(false)); } public EnumBlockRenderType getRenderType(IBlockState state) { if (state.getValue(VISIBLE)) { return EnumBlockRenderType.MODEL; } return EnumBlockRenderType.INVISIBLE; } public boolean isFullCube(IBlockState state) { return false; } public boolean isOpaqueCube(IBlockState state) { return false; } public int getMetaFromState(IBlockState state) { return 0; } protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] { VISIBLE }); } }Si tu pouvais me la compléter avec tes messages de debug car je vois pas vraiment ou les placer, Merci d’avance

-
Manque un return :
@SideOnly(Side.CLIENT) private IBlockState getClientState(IBlockState state) { ItemStack stack1 = Minecraft.getMinecraft().thePlayer.getHeldItemMainhand(); ItemStack stack2 = Minecraft.getMinecraft().thePlayer.getHeldItemOffhand(); if ((stack1 != null && stack1.getItem() == Item.getItemFromBlock(this)) || (stack2 != null && stack2.getItem() == Item.getItemFromBlock(this))) { return state.withProperty(VISIBLE, Boolean.valueOf(true)); // visible } return state.withProperty(VISIBLE, Boolean.valueOf(false)); } -
@‘BrokenSwing’:
Manque un return :
@SideOnly(Side.CLIENT) private IBlockState getClientState(IBlockState state) { ItemStack stack1 = Minecraft.getMinecraft().thePlayer.getHeldItemMainhand(); ItemStack stack2 = Minecraft.getMinecraft().thePlayer.getHeldItemOffhand(); if ((stack1 != null && stack1.getItem() == Item.getItemFromBlock(this)) || (stack2 != null && stack2.getItem() == Item.getItemFromBlock(this))) { return state.withProperty(VISIBLE, Boolean.valueOf(true)); // visible } return state.withProperty(VISIBLE, Boolean.valueOf(false)); }Merci bon maintenant ça change bien de state ça passe de visible: true quand j’ai le block en main et visible: false quand je l’ai plus mais la texture ne change par contre pas, je veux dire elle le bloque garde la même texture et ne devient pas invisible comme il le devrait.

-
Fait voir tout tes logs