Modulars Blocks
-
Euh , effectivement , ce serait mieux , mauis on ne sait pas le faire
-
Petit up pour vous dire que j’essaie d’avancer , mais que si quelqun est disposé à m’aider , j’aprécierai son aide , en particulier sur l’update des TileEntity
Voici mon probleme : Grace au tutoriel de robin , j’ai crée une TilEntity capable de changer les valeur avec un clique droit , et en fouillant un peu , j’ai réussi a faire “poser” un bloc de feu , seulement , mon souci est le suivant : Quand la valeur est suppérieure a 12 , un bloc de feu apparait , si je modifie la valeur du bloc , le feu apparait ou disparais , mais je voudrais que quoiqu’il arrive le feu sois présent si valeur > 12 , le véritable probleme , c’est que lorsque j’éteins le feu manuellement , il ne réapparait pas , pourtant , la valeur est toujours supérieure a 12 . Y’aurait t’il un moyen d’update le block tous les ticks ou moins sans cliquer dessus ? -
Déjà avant de commencer ton projet. Parceque j’ai l’impression que t’es déjà en train de coder alors que c’est pas par là qu’on commence.
Déjà défini toi tous les objets, propriétés, méthodes et évènements que tu as besoin et fait un diagramme sur papier.
Ensuite regarde ce qui réuni tous les objets entre eux, construit des interface
…
ça sert à rien de se lancer dans un grand projet si c’est pour faire du quick and dirty qui marche qu’à moitié et qui n’est pas extensible à souhait.Exemple. J’ai 10 matériaux.
interface materiau
conductible
chaleuremise
calculchaleuremise retourne chaleuremise
coefficientderesistance
destructible
methode soumisaucourant
noyé
…Tu as déjà des pistes pour faire une interface
-
@‘nwmqpa’:
Petit up pour vous dire que j’essaie d’avancer , mais que si quelqun est disposé à m’aider , j’aprécierai son aide , en particulier sur l’update des TileEntity
Voici mon probleme : Grace au tutoriel de robin , j’ai crée une TilEntity capable de changer les valeur avec un clique droit , et en fouillant un peu , j’ai réussi a faire “poser” un bloc de feu , seulement , mon souci est le suivant : Quand la valeur est suppérieure a 12 , un bloc de feu apparait , si je modifie la valeur du bloc , le feu apparait ou disparais , mais je voudrais que quoiqu’il arrive le feu sois présent si valeur > 12 , le véritable probleme , c’est que lorsque j’éteins le feu manuellement , il ne réapparait pas , pourtant , la valeur est toujours supérieure a 12 . Y’aurait t’il un moyen d’update le block tous les ticks ou moins sans cliquer dessus ?Tu devrais pouvoir gérer dans la TileEntity normalement

Sinon XcentY, pas forcément besoin d’une interface si 'y a qu’une implémentation.
Et noter ses idées c’est bien, mais c’est pas nécessaire de faire une liste complète. Beaucoup d’idées viendront lors des tests -
Alors , merci de ces deux retours !
@YcentY : Pour les idées , les poser sur papier , ce serait effectivement bien , mais je voulais connaitre le fonctionnement d’une TileEntity , mais t’inquiete pas , je commence deja a noter les propriétés de différents métaux . Pour l’interface , j’y avais deja pensé , en faisant plusieurs par groupe d’attributs , mais quelqun m’a conseillé de le mettre dans une classe mere , et de tout regrouper avec des comment pour plus de lisibilité , a savoir que je vais commencer par les metaux , car rien qu’avec ca , je vais avoir du boulot !@jglrxavpok : Euh… d’accord , mais OU et COMMENT . J’ai fouillé énormément avant de poster ici !
Ensuite , pour le moment je fonctionne avec des idées simples , tres extensibles , mais difficile a mettre en place , je pense que je vais commencer par des attributs simples , puis mettre des fonctionnalitées originales , et ensuite , impleter des attributs plus complexeEncore une fois , si vous avez d’autres idées , proposez les moi !
-

updateEntity fera ce que tu voudras
-
Petite exception …. :
et.minecraft.util.ReportedException: Ticking block entity at net.minecraft.world.World.updateEntities(World.java:2154) ~[World.class:?] at net.minecraft.client.Minecraft.runTick(Minecraft.java:2096) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1038) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:961) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0] 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:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0] at GradleStart.bounce(GradleStart.java:107) [start/:?] at GradleStart.startClient(GradleStart.java:100) [start/:?] at GradleStart.main(GradleStart.java:55) [start/:?] Caused by: java.lang.NullPointerException at net.modularblocks.common.material.TileEntityMaterial.isHeating(TileEntityMaterial.java:77) ~[TileEntityMaterial.class:?] at net.modularblocks.common.material.TileEntityMaterial.updateEntity(TileEntityMaterial.java:80) ~[TileEntityMaterial.class:?] at net.minecraft.world.World.updateEntities(World.java:2139) ~[World.class:?] … 17 more ---- Minecraft Crash Report ---- // Why is it breaking :( Time: 05/09/14 14:05 Description: Ticking block entity java.lang.NullPointerException: Ticking block entity at net.modularblocks.common.material.TileEntityMaterial.isHeating(TileEntityMaterial.java:77) at net.modularblocks.common.material.TileEntityMaterial.updateEntity(TileEntityMaterial.java:80) at net.minecraft.world.World.updateEntities(World.java:2139) at net.minecraft.client.Minecraft.runTick(Minecraft.java:2096) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1038) at net.minecraft.client.Minecraft.run(Minecraft.java:961) at net.minecraft.client.main.Main.main(Main.java:164) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at GradleStart.bounce(GradleStart.java:107) at GradleStart.startClient(GradleStart.java:100) at GradleStart.main(GradleStart.java:55)Voici mon code :
public void isHeating() { World world = null; if(this.getElectricActualVoltage() > this.getCapacityVoltage()){ world.setBlock(xCoord, yCoord+1, zCoord, Blocks.fire); this.updateEntity(); } else world.setBlock(xCoord, yCoord+1, zCoord, Blocks.air); } public void updateEntity() { this.isHeating(); } }Si quelqun a une solution …
-
World world = null;
…
Si l’objet world est null, c’est normal que ça cause un NPE …
utilise this.worldObj si tu as besoin de l’instance du monde. -
Aprs avoir fait ca j’ai encore une erreur …
C’était bien World world = this.worldObj; qu’i fallait faire ? -
Non, directement this.worldObj.setBlock(xCoord, yCoord+1, zCoord, Blocks.fire)
-
Alors , plus d’erreur , juste , la “surchauffe” ne se produit plus à 13.0 , voici mon code :
public void isHeating() { if(this.getElectricActualVoltage() > this.getCapacityVoltage()){ this.worldObj.setBlock(xCoord, yCoord+1, zCoord, Blocks.fire); } else this.worldObj.setBlock(xCoord, yCoord+1, zCoord, Blocks.air); } public void updateEntity() { this.isHeating(); }Dans ma class Block , j’appelle bien la methode ths.updateEntity();
-
Vérifie les valeurs de this.getElectricActualVoltage() et this.getCapacityVoltage()
-
Voila :
player.addChatMessage(new ChatComponentTranslation("Le courant est de : " + tileEntityMaterial.getElectricActualVoltage())); tileEntityMaterial.setElectricVoltage(12.0); tileEntityMaterial.updateEntity();La valeur est bien vrai , il m’affiche bien les bonnes valeurs lorsque je clique
-
Bon , j’ai résolu on probleme , il suffisait simplement de mettre le contenu de isHeating() dans updateEntity() au lieu d’appeler isHeating dans updateEntity
-
Est ce qu’un admin voudrait bien déplacer ce sujet dans la zone “En devellopement” ?
Merci -
Bonjour , j’ai deux nouveaux problemes :
- Mon render spécial de Table ne s’affiche pas , pouvez exactement me dir ou je dois placer le fichier par rapport au ressources ?
package net.modularblocks.proxy; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.modularblocks.client.Table; import net.modularblocks.common.microblock.TileEntityTable; import org.lwjgl.opengl.GL11; public class TileEntityTableSpecialRender extends TileEntitySpecialRenderer implements IInventoryRenderer { private final Table model = new Table(); public static final ResourceLocation textureLocation = new ResourceLocation("modularblocks" , "textures/blocks/modelTable.png"); public TileEntityTableSpecialRender() { this.func_147497_a(TileEntityRendererDispatcher.instance); } @Override public void renderInventory(double x, double y, double z) { this.renderTileEntityTableAt(null, x, y, z, 0.0F); } @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float tick) { this.renderTileEntityTableAt((TileEntityTable)te, x, y, z, tick); } public void renderTileEntityTableAt(TileEntityTable te, double x, double y, double z, float tick) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5F, y + 1.5F, z + 0.5F); this.bindTexture(textureLocation); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); this.model.render(0.0625F); GL11.glPopMatrix(); } }Et 2 eme probleeme : je ne trouve pas de tuto récent sur les GUI , du coup , j’ai du me rabattre sur une JFrame
Sachant que la JFrame n’est qu’une interface qui sert à construire quelque chose à partir d’objets listés dans le code , y’a t’il
des problemes qui peuvent survenir ? (cette fenetre va me servir pour la conception des blocs “spéciaux”) -
change la virgule par un + dans ton chemin.
-
Toujours rien …. bon , je me pencherai sur ce probleme une autre fois , sinon , tu parlais de probleme de support pour moddeur , ou serait le probleme ?
-
Je dit extremement bonne idée ce mod a continuer !
-
Merci beaucoup , hélas , je suis sur un autre projet en ce moment , meme si je n’abandonne pas celui-ci !