Mod [Requête] [Java] Orientation d'un Bloc Simple sur base MCreator.

MeOwCrafteur

Bucheron
6 Juin 2013
4
0
12
37
Bonjour/Bonsoir à tout les adeptes de Minecraft !

Je viens en ce jour vous demander votre aide pour une chose qui peut paraitre simple pour certains mais qui ne l'est vraiment pas pour moi !!

Vous comprendrez par la suite que je ne savais pas trop quoi mettre comme titre plus explicatif !!

Je m'explique : Étant novice (noob total même) dans la programmation en Java, j'utilise un petit logiciel bien pratique pour créer ses propres Mods pour Minecraft (MCreator).
Bien entendu, cela reste du Mod assez simple et basique, de la création de bloc, de "Recettes" mais tout de même aussi de biomes ou encore de mobs ou autres...

Bref, pour en venir à mon problème, j'ai donc créer un Bloc, grâce à ce petit logiciel, tout ce qu'il y à de plus simple !! (bloc plat, avec une texture toute bête)

MCreator m'a donc sorti le code (que voici)

mod_couvert.java
Code:
package net.minecraft.src;
 
import cpw.*;
import cpw.mods.*;
import cpw.mods.fml.*;
import cpw.mods.fml.client.*;
import cpw.mods.fml.client.modloader.*;
import cpw.mods.fml.client.registry.*;
import cpw.mods.fml.common.*;
import cpw.mods.fml.common.asm.*;
import cpw.mods.fml.common.asm.transformers.*;
import cpw.mods.fml.common.discovery.*;
import cpw.mods.fml.common.discovery.asm.*;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.functions.*;
import cpw.mods.fml.common.modloader.*;
import cpw.mods.fml.common.network.*;
import cpw.mods.fml.common.registry.*;
import cpw.mods.fml.common.toposort.*;
import cpw.mods.fml.common.versioning.*;
import cpw.mods.fml.relauncher.*;
import cpw.mods.fml.server.*;
import ibxm.*;
import net.*;
import net.minecraft.*;
import net.minecraft.block.*;
import net.minecraft.block.material.*;
import net.minecraft.client.*;
import net.minecraft.client.audio.*;
import net.minecraft.client.entity.*;
import net.minecraft.client.gui.*;
import net.minecraft.client.gui.achievement.*;
import net.minecraft.client.gui.inventory.*;
import net.minecraft.client.model.*;
import net.minecraft.client.multiplayer.*;
import net.minecraft.client.particle.*;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.culling.*;
import net.minecraft.client.renderer.entity.*;
import net.minecraft.client.renderer.texture.*;
import net.minecraft.client.renderer.tileentity.*;
import net.minecraft.client.settings.*;
import net.minecraft.client.texturepacks.*;
import net.minecraft.command.*;
import net.minecraft.crash.*;
import net.minecraft.creativetab.*;
import net.minecraft.dispenser.*;
import net.minecraft.enchantment.*;
import net.minecraft.entity.*;
import net.minecraft.entity.ai.*;
import net.minecraft.entity.boss.*;
import net.minecraft.entity.effect.*;
import net.minecraft.entity.item.*;
import net.minecraft.entity.monster.*;
import net.minecraft.entity.passive.*;
import net.minecraft.entity.player.*;
import net.minecraft.entity.projectile.*;
import net.minecraft.inventory.*;
import net.minecraft.item.*;
import net.minecraft.item.crafting.*;
import net.minecraft.nbt.*;
import net.minecraft.network.*;
import net.minecraft.network.packet.*;
import net.minecraft.network.rcon.*;
import net.minecraft.pathfinding.*;
import net.minecraft.potion.*;
import net.minecraft.profiler.*;
import net.minecraft.server.*;
import net.minecraft.server.dedicated.*;
import net.minecraft.server.gui.*;
import net.minecraft.server.integrated.*;
import net.minecraft.server.management.*;
import net.minecraft.src.*;
import net.minecraft.stats.*;
import net.minecraft.tileentity.*;
import net.minecraft.util.*;
import net.minecraft.village.*;
import net.minecraft.world.*;
import net.minecraft.world.biome.*;
import net.minecraft.world.chunk.*;
import net.minecraft.world.chunk.storage.*;
import net.minecraft.world.demo.*;
import net.minecraft.world.gen.*;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.layer.*;
import net.minecraft.world.gen.structure.*;
import net.minecraft.world.storage.*;
import net.minecraftforge.*;
import net.minecraftforge.classloading.*;
import net.minecraftforge.client.*;
import net.minecraftforge.client.event.*;
import net.minecraftforge.client.event.sound.*;
import net.minecraftforge.common.*;
import net.minecraftforge.event.*;
import net.minecraftforge.event.entity.*;
import net.minecraftforge.event.entity.item.*;
import net.minecraftforge.event.entity.living.*;
import net.minecraftforge.event.entity.minecart.*;
import net.minecraftforge.event.entity.player.*;
import net.minecraftforge.event.terraingen.*;
import net.minecraftforge.event.world.*;
import net.minecraftforge.liquids.*;
import net.minecraftforge.oredict.*;
import net.minecraftforge.transformers.*;
import paulscode.*;
import paulscode.sound.*;
import paulscode.sound.codecs.*;
 
import java.util.Random;
 
public class mod_couvert extends BaseMod{
 
public mod_couvert(){}
 
public static BlockCouvert block;
 
public void load(){
 
ModLoader.registerBlock(block);
ModLoader.addName(block, "Couvert");
 
}
public String getVersion(){
return "1.0";
}
 
 
static{
 
block = (BlockCouvert)(new BlockCouvert(186).setHardness(2.0F)
.setResistance(10.0F)
.setLightValue(0.0F)
.setUnlocalizedName("Couvert")
.setLightOpacity(0)
.setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabBlock)
);block.setBlockBounds(0.0F,0.0F,0.0F,1.0F,0.0010F,1.0F);
MinecraftForge.setBlockHarvestLevel(block, "pickaxe", 0);
}
 
static class BlockCouvert extends Block
{
 
int a1 = 0,a2 = 0,a3 = 0,a4 = 0,a5 = 0,a6 = 0;
 
Icon gor = null, dol = null, st1 = null, st2 = null, st3 = null, st4 = null;
 
boolean red = false;
 
 
 
 
 
protected BlockCouvert(int i)
{
        super(i, Material.rock);
 
}
public boolean isPoweringTo(IBlockAccess blockAccess, int i, int j, int k, int l){
return red;
}
public Icon getIcon(int i, int par2){
 
if (i == 0)
return gor;
 
else if (i == 1)
return dol;
 
else if (i == 2)
return st1;
 
else if (i == 3)
return st2;
 
else if (i == 4)
return st4;
 
else if (i == 5)
return st3;
 
else
return gor;
 
}
 
public void registerIcons(IconRegister par1IconRegister)
{
this.gor = par1IconRegister.registerIcon("couvert");
this.dol = par1IconRegister.registerIcon("couvert");
this.st1 = par1IconRegister.registerIcon("couvert");
this.st2 = par1IconRegister.registerIcon("couvert");
this.st3 = par1IconRegister.registerIcon("couvert");
this.st4 = par1IconRegister.registerIcon("couvert");
}
public boolean isOpaqueCube()
{
return false;
}
 
public boolean renderAsNormalBlock()
{
return false;
}
 
public int getRenderType(){
return 0;
}
public int tickRate()
{
    return 10;
}
 
public int quantityDropped(Random par1Random){
return 1;
}
 
}
}
Et qui marche bien sur mon client tout comme sur mon serveur test !

Maintenant, ma requête :
J'ai hélas remarqué que lors du placement du bloc, celui-ci se retrouvait toujours dans la même position ! Hors, j'aurais voulu que selon la direction dans laquelle le joueur regarde, le bloc se pose dans un sens ou dans un autre (Ça va, ça reste compréhensible ? ^^) en gros, je souhaite pouvoir faire pivoter ce bloc de 90 , 180, ou 270°...

Mais je ne sais absolument pas comment faire ! J'ai beau fouiller les codes existants de blocs minecraft (four...) ou sur le net de fond en comble, hélas, je ne parviens pas a trouver mon bonheur !
Voici donc la raison pour laquelle je me tourne désormais vers vous !

J'ai tout de même remarqué qu'en modifiant :

Code:
public int getRenderType(){
 
return 0;
 
}
par
Code:
public int getRenderType(){
 
return 11;
 
}
ou encore avec un return 12, 13 et 14, et bien la rotation de base de mon bloc avait changé !

Maintenant j'aimerais avoir la possibilité de choisir l'un de ces 4 types de rendu en fonction de la direction du joueur (Nord, Sud, Est ou Ouest) ! Si ça peut marcher comme çelà bien entendu !

Sinon, je suis preneurs de toutes les manières les plus simples (ou non) pour parvenir à mes fins ! ^^

Merci d'avance pour toutes vos réponses !

Ah ! une dernière petite chose encore :
Mon anglais n'étant pas terrible, évitez s'il vous plait de m'envoyez tout type de liens sur des sites anglophones remplis de codes divers et variés incompréhensible pour un noob tel que moi ! ^^ Merci

Cordialement
 
Bon, je sais que ça sert à rien d'up un topic, mais faut croire que cette communauté n'aime pas les novices en matière de programmations Java !
Même pas un petit message pour dire : "Je sais pas" ni même "Ah non, c'est pas possible de faire comme ça" ou encore "t'en demande un peu beaucoup là, c'est pas comme ça que tu risque d'apprendre le java"...

Bref ! Ravis d'avoir pu discuter avec moi-même ! ^^
Sur ce... Non, rien !!
@+
 
Si si, il y a bien des codeurs java sur ce forum, ma réponse est simple :
Les logiciels de créeation automatique de mod sont de la pure merde, télécharge eclipse, et code comme un vrai codeur, les résultat seront beaucoup mieux.
Rien que dans les importations on voit la pure erreur des logiciels automatique.
 
Merci.
Mouais, je me doutait un peu que les logiciels de ce type n'étaient pas merveilleux, mais pour le peu dont j'en ai besoin, je trouvai cela largement suffisant, surtout que les mods que je fait ne sont pas vraiment compliqué en sois ! Je me voit mal me mettre à apprendre le Java juste pour ces quelques petites choses... Même si je vais tout de même commencer par des petits tutos de chez vous ! ^^ ! M'enfin j'aurai quand même espéré que quelqu'un puisse m'aider ! :p

Mais bon, c'est tant-pis, je vais essayer de me trouver un moddeur Java pour me faire le boulot à ce compte là ! ^^

Merci robin d'avoir sauver l'honneur =P
A bientôt !
 
Bon peut etre que c'est trop tard mais en faite pour changer la face du block par rapport a la personne.
Concernant les fours et autres c'est comme ca:

{
"variants": {
"facing=north": { "model": "furnace" },
"facing=south": { "model": "furnace", "y": 180 },
"facing=west": { "model": "furnace", "y": 270 },
"facing=east": { "model": "furnace", "y": 90 }
}
}

Et pour les buches c'est:

{
"variants": {
"axis=y": { "model": "acacia_log" },
"axis=z": { "model": "acacia_log_side" },
"axis=x": { "model": "acacia_log_side", "y": 90 },
"axis=none": { "model": "acacia_bark" }
}
}

A mettre dans le dossier blockdata en <nomdublock>.json

J'espère que sa pourrait aider tous ceux qui lisent ce sujet et qui attendent la reponse.