Résolu Changer Texture avec clique droit avec un item
-
Bonjour, je vient pour vous demander quelque chose ^^
Alors voila j’aimerais savoir si on pouvait faire changer la texture d’un bloc en fonction de l’item que l’on tient dans la main ^^
Par exemple j’ai un block normal et si je clique droit dessus avec un diamand il prend la texture du block de diam’s ^^
Voila j’espère que j’ai bien expliquer XD
-
Salut,
Par un bloc normal tu entends quoi ? N’importe quel bloc du jeu ? Ou un bloc que tu ajoutes toi via ton mod ?
Dans le premier cas ce n’est pas possible.
Dans le second cas c’est possible, je l’ai déjà fait :
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/BlockPrivate.java#L141-L187
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/BlockPrivate.java#L288-L299
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/TileEntityPrivateAdaptable.java -
@‘robin4002’:
Salut,
Par un bloc normal tu entends quoi ? N’importe quel bloc du jeu ? Ou un bloc que tu ajoutes toi via ton mod ?
Dans le premier cas ce n’est pas possible.
Dans le second cas c’est possible, je l’ai déjà fait :
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/BlockPrivate.java#L141-L187
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/BlockPrivate.java#L288-L299
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/TileEntityPrivateAdaptable.javaUn bloc de mon mod merci je vais regarder sa ^^
Et pour changer le modèle d’un bloc techne ssa change beaucoup ou pas ?
-
Heu si c’est un modèle techne pas sûr que ce soit possible.
Ou alors ça va être très compliqué. -
Par ISBRH c’est possible, tu utilises le RenderBlock fournit en paramètre pour faire le rendu du block voulut. Par contre si c’est une texture que tu veux appliquer sur un modèle, il faut récupérer les coordonnées de la texture du block dans le cache
-
Donc Voila, Robin j’ai regarder les code que tu ma envoyer et j’ai rien compris XD ^^.
J’ai donc essayer de cree un block ou quand on clique droit avec un Item Special sa fait spawn un block au dessus, ensuite on check si le block au dessus correspond au block indiquer alor on change la texture sinon on laisse la texture XD (J’espere que c’est clair ^^)
donc voila tout marche bien sauf un truc quand le joueur clique sur le bloc avec rien dans la main sa crash
Code
public class testBlock extends Block { @SideOnly(Side.CLIENT) private IIcon[] iconArray; public static IIcon Block1; public static IIcon Block2; public testBlock (int i,Material material) { super(material); this.setHarvestLevel("pickaxe", 3); this.setHardness(20.0F); this.setResistance(100.0F); this.setLightLevel(1.0F); this.setStepSound(soundTypeMetal); this.setBlockName("testBlock"); } public void registerBlockIcons(IIconRegister iconRegister) { block1= iconRegister.registerIcon("lfc:testBlock1"); block2= iconRegister.registerIcon("lfc:testBlock2"); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(player.getCurrentEquippedItem().getItem() == Items.apple) { world.setBlock(x, y+1, z, Blocks.anvil); } else if(player.getCurrentEquippedItem().getItem() !=Items.apple) { world.setBlock(x, y+1, z, Blocks.air); } return true; } public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { if(world.getBlock(x, y+1, z) == Blocks.anvil) { return block1; } return block2; } }
Crash
[15:03:32] [Client thread/FATAL]: Unreported exception thrown! java.lang.NullPointerException at fr.burning.lfc.blocks.testBlock.func_149727_a(testBlock.java:60) ~[testBlock.class:?] at net.minecraft.client.multiplayer.PlayerControllerMP.func_78760_a(PlayerControllerMP.java:326) ~[biy.class:?] at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1399) ~[azd.class:?] at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1903) ~[azd.class:?] at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:916) ~[azd.class:?] at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:835) [azd.class:?] at net.minecraft.client.main.Main.main(SourceFile:103) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51] at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?]
-
getCurrentEquipedItem() renvoie null et tu fais .getItem() dessus, donc ça cause un NPE.
-
@‘Snowy_1803’:
getCurrentEquipedItem() renvoie null et tu fais .getItem() dessus, donc ça cause un NPE.
je voit pas ou j’ai fais sa car je n’est pas ecrit :
[size=smallplayer][size=small.][size=smallgetCurrentEquippedItem]size=small.[size=smallgetItem]size=small == null
-
Il faut faire :
player.getCurrentEquipedItem() != null && player.getCurrentEquipedItem().geItem() == Items.apple -
Merci a tous, sa marche niquel je passe en résolut