.2 : energy mechanic / api / "cable"
-
Dans ce cas, c’est normal : qand un block n’a pas de blockState, minecraft prend la valeur “normal”. Si tu veux que ton block soit orientable, il faut que tu joue avec les BlockStates dans la class de ton block. Il y as quelques tutos qui peuvent t’aider :
-
Il y a aussi la classe de la pumpkin qui pourrait t’aider (ou de n’importe quel block orientable )
-
J’ai essayé de faire quelques petits testes mais j’y arrive pas
en aillant jeté un coup d’œil dans la class de la pumpkin et du four -
Envoies ton code actuel.
-
package net.spyman.advprocess.common.blocks; import net.minecraft.block.BlockHorizontal; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.IBlockState; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class BlockMachineStoneMill extends BlockStoneMachine { public static final PropertyDirection FACING = BlockHorizontal.FACING; public BlockMachineStoneMill() { this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH)); } private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state) { if (!worldIn.isRemote) { IBlockState iblockstate = worldIn.getBlockState(pos.north()); IBlockState iblockstate1 = worldIn.getBlockState(pos.south()); IBlockState iblockstate2 = worldIn.getBlockState(pos.west()); IBlockState iblockstate3 = worldIn.getBlockState(pos.east()); EnumFacing enumfacing = (EnumFacing)state.getValue(FACING); if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock()) { enumfacing = EnumFacing.SOUTH; } else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock()) { enumfacing = EnumFacing.NORTH; } else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock()) { enumfacing = EnumFacing.EAST; } else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock()) { enumfacing = EnumFacing.WEST; } worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2); } } } -
ya pas juste une petite solution ??
-
Il te manque ces fonctions :
public IBlockState withRotation(IBlockState state, Rotation rot) { return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING))); } /** * Returns the blockstate with the given mirror of the passed blockstate. If inapplicable, returns the passed * blockstate. */ public IBlockState withMirror(IBlockState state, Mirror mirrorIn) { return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING))); } /** * Called by ItemBlocks just before a block is actually set in the world, to allow for adjustments to the * IBlockstate */ public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); } /** * Convert the given metadata into a BlockState for this Block */ public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta)); } /** * Convert the BlockState into the correct metadata value */ public int getMetaFromState(IBlockState state) { return ((EnumFacing)state.getValue(FACING)).getHorizontalIndex(); } protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {FACING}); } -
Ok merci je savais pas quil fallait toutes ces fonctions et aussi quand on casse le block il y a des particles sauf que je les ai sur l’un de mes blocks mais pas sur lautre, sur lautre cest le rose/noir de la texture buggé
y a t-il un moyen de changer cela ? -
Regardes dans le fichier json, normalement il faut ajouter un truc du genre “particle”:“la texture”.
-
C’est un peu particulier pour les blocs en 1.10+
Il faut désormais un ItemBlock, voilà quelques bouts de codes que j’utilise
Ceci dans le constructeur d’un block “mère” en gros ta classe mère pour tout tes blocs
setBlockName(this, unlocalizedName); final ItemBlock itemBlock = new ItemBlock(this); itemBlock.setRegistryName(this.getRegistryName()); GameRegistry.register(this); GameRegistry.register(itemBlock);Et pour la fonction setBlockName()
public static void setBlockName(Block blockIn, String unlocalizedName) { blockIn.setRegistryName("tonModID", unlocalizedName); blockIn.setUnlocalizedName(unlocalizedName); }Ensuite tu déclare tes blocs de la plus simple des manières:
public static final Block testBlock= new BlockTest("nom_Unlocalized");Et voilà tu enregistre les rendu pour les .json avec normalement:
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register();Et paf tu as de beaux chocapics avec le nouveau système de registry() de forge
-
Ok merci jai mes paticles maintenant

et aussi quelqun sait-t-il comment creer des “cable” ? car moi j’en n’ai absolument aucunes idées -
Même pas une petite idée ?
-
Pas besoin de double post, on est pas ici h24.
Et si j’ai une petite vu que j’en ait déjà fait, mais cest long et relativement compliqué et il y a plusieurs manières, plus ou moins bien, déjà il te faut des blocks avec tile entity, et pour la manière la plus simple, tu fait une variable qtenergie, et dans la fonction update tu regarde si ya des câbles autour, si oui tu leur donne. -
Désolé pour le double post
Mais en fait la partie energy ne me dérange pas trop car c’est juste une boolean “ca passe ou ca passe pas” mais en fait c’est plus pour la partie graphique les conecxions, etc…
C’est cela que je ne sais pas faire -
Ah ok, dans la classe block, il existe une fonction qui retourne le BlockState actuel en fonction des blocks autour (je sais malheuresement plus son nom), après tu fais un block state avec un boolean pour chaque face, et dans tes jsons, tu fais le rendu en fonction des booleans (et si tu veux pas passer ta vie dessus, y’a des logiciels pour en faire).
-
c’est quoi le nom du programme en question car oui ca va me souler sinon ?
et aussi faire le rendu via un json en fonction d"un boolean dsl mais je sais pas trop comment mit prendre
-
MrCrayfish je sais plus quoi il me semble, mais je regarde ce WE vu que je compte me repencher sur le mod que j’avais commencé y’a longtemps
-
avec Model Creator ?
-
Oui c’est ça.
-
T’es sur car je vois pas trop comment le faire avec ce logiciel
après je ne suis pas un expert des jsons