Salut tout le monde !
J'ai besoin d'aide de votre part !
En effet, je compte faire un mod qui, entre autre, fait pourrir la viande. Pour cela j'ai fait ce code pour "ItemFood.class" :
public ItemFood(int i, int j, boolean flag)
{
super(i);
healAmount = j;
isWolfsFavoriteMeat = flag;
maxStackSize = 1;
setMaxDamage(300);
}
public boolean onBlockDestroyed(ItemStack itemstack, int i, int j, int k, int l, EntityLiving entityliving) //Petit test
{
itemstack.damageItem(1, entityliving);
return true;
}
public void OnTickInGame(Minecraft Minecraft) //Tout les 40 tick, on rajoute 1 dommage a la viande
{
if (pourri == 40) {
pourri = 0;
ItemStack.damageItem(1); //Ici est le PB, je sais pas quoi mettre comme entité puisque y'en a pas
}
pourri++;
}
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
itemstack.stackSize--;
entityplayer.heal(healAmount);
return itemstack;
}public int getHealAmount()
{
return healAmount;
}public boolean getIsWolfsFavoriteMeat()
{
return isWolfsFavoriteMeat;
}private int healAmount;
private boolean isWolfsFavoriteMeat;
}
Voila, désoler pour ce quote très moche mais j'ai pas trouver la bonne balise.
Aussi, pour mon MOD il me faut un petit cour sur la GUI, je suis anglophone.
Merci d'avance .
Dernière modification par tangtang123 (01/08/2011 00:43:58)
Hors ligne
Bonjours.
Je faisait un bloc Televisions et j'ai rencontrer 2 problemes (pas des erreur)
1 - La texture ne s'orientait pas automatiquement comme le four.
2 - La tv ne peut etre alimenter par Redstone
En fait je voudrait savoir comment faire pour que la texture soit orienté par default du coté d'ou nous la posons , comme le four.
Et aussi est -il possible de changer la texture de mon bloc quand celui ci est alimenté par la redstone ?
Voici mon code qui marche bien mais je n'ai pas ajouter de fonctions permettant d'orienter la TV (1) et de la faire changer de texture (2).
package net.minecraft.src;
import java.util.Random;
public class BlockTv extends Block {
private int side3Id; //Cote 3 = avant
private int side01245Id; //Cote 0, 1, 2, , 4 et 5 (la non plus).
public BlockTv(int id) {
super(id, Material.rock);
side3Id = ModLoader.addOverride("/terrain.png", "/tv_on.png"); //N'oublie pas de remplacer side01.png par ton fichier
side01245Id = ModLoader.addOverride("/terrain.png", "/tv_cote.png"); //Pareil pour side2345.png
//La on recréer la classe parente, ici j'ai mis du bois comme matériaux, mais vous pouvez utilisez rock (pierre, que l'ont peut
//récolter qu'avec une pioche) ou encore sand (sable) et la votre bloc sera soumis à l'attraction terrestre. Ou même comme de
//la terre, dans ce cas la Material.ground
}
public int idDropped(int i, Random random) {
return blockID;
//Ici on retourne l'ID du bloc qui apparait une fois le bloc cassé. Pour l'instant, j'ai mis l'ID de la terre.
}
public int getBlockTextureFromSide(int i) {
if(i == 3) {
return side3Id;
}
return side01245Id;
}
}
Dernière modification par Pingoo (01/08/2011 17:15:10)
Hors ligne
Regarde le coe source tu four, tu verra un code que tu copie. (un truc genre "defaultorientation")
Hors ligne
J'y est penser j'ai meme essayer mais aucun resultat.
je ne suis pas un "pro" en java c'est pour cela que je requiert votre aide.
J'en ai beaucoup besoin j'ai essayer ce code mais sa n'a pas marcher :
Je l'ai trouver sur le BlocFurnace.java mais je n'y comprend rien et cela ne marche pas
public void onBlockAdded(World world, int i, int j, int k)
{
super.onBlockAdded(world, i, j, k);
setDefaultDirection(world, i, j, k);
}private void setDefaultDirection(World world, int i, int j, int k)
{
if(world.multiplayerWorld)
{
return;
}
int l = world.getBlockId(i, j, k - 1);
int i1 = world.getBlockId(i, j, k + 1);
int j1 = world.getBlockId(i - 1, j, k);
int k1 = world.getBlockId(i + 1, j, k);
byte byte0 = 3;
if(Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1])
{
byte0 = 3;
}
if(Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l])
{
byte0 = 2;
}
if(Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1])
{
byte0 = 5;
}
if(Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1])
{
byte0 = 4;
}
world.setBlockMetadataWithNotify(i, j, k, byte0);
}public int getBlockTexture(IBlockAccess iblockaccess, int i, int j, int k, int l)
{
if(l == 1)
{
return blockIndexInTexture + 17;
}
if(l == 0)
{
return blockIndexInTexture + 17;
}
int i1 = iblockaccess.getBlockMetadata(i, j, k);
if(l != i1)
{
return blockIndexInTexture;
}
if(isActive)
{
return blockIndexInTexture + 16;
} else
{
return blockIndexInTexture - 1;
}
Dernière modification par Pingoo (01/08/2011 17:14:50)
Hors ligne
Tu prend que :
public void onBlockAdded(World world, int i, int j, int k)
{
super.onBlockAdded(world, i, j, k);
setDefaultDirection(world, i, j, k);
}
private void setDefaultDirection(World world, int i, int j, int k)
{
if(world.multiplayerWorld)
{
return;
}
int l = world.getBlockId(i, j, k - 1);
int i1 = world.getBlockId(i, j, k + 1);
int j1 = world.getBlockId(i - 1, j, k);
int k1 = world.getBlockId(i + 1, j, k);
byte byte0 = 3;
if(Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1])
{
byte0 = 3;
}
if(Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l])
{
byte0 = 2;
}
if(Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1])
{
byte0 = 5;
}
if(Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1])
{
byte0 = 4;
}
world.setBlockMetadataWithNotify(i, j, k, byte0);
}
La sa devrait marcher, je promet rien..
Hors ligne
nan sa marche pas.
Le bloc se pose toujours dans le meme sens.
Si vous avez d'autres idées elles sont les bienvenus.
Sinon pour ton probleme tu voudrait que l'objet soit delete une fois que pourri ==40 ?
Tu devrait chercher sur les objets qui s'utilisent une seul fois pour voir la fonction qui les fait disparaitre.
Hors ligne
J'ai trouver une solution pour toi je pense.
Pour faire disparaitre l'objet rajoute
return itemstack
donc ton code serait :
public void OnTickInGame(Minecraft Minecraft) //Tout les 40 tick, on rajoute 1 dommage a la viande
{
if (pourri == 40) {
pourri = 0;
return itemstack; //Ici est le PB, je sais pas quoi mettre comme entité puisque y'en a pas
}
pourri++;
}
Si sa marche je suis content de t'avoir aider
Hors ligne
Non, enfait je veux que la viande pourrisse a chaque tick, comme sa au bout d'un certain temps, elle serais supprimé. Mais le PB est que pour enlever de la "vie" a l'objet, mais qu'il me manque un argument.
Hors ligne
est-ce normal que quand je lance decompile.bat il y a marqué le chemin d'acces spécifié est introuvable? Pourtant j'ai tout effectué avec précaution ='(
Hors ligne
Si tu met ceci :
itemstack.damageItem(i, entityplayer);
entityplayer.swingItem()
Sa marche ?
J'ai trouver ce code sur la canne a peche
Apres remplace le (1, entityplayer) je pense je te l'ai donner comme sa car sa peut peut etre t'aider.
Sinon personne aurait une idée pour mon probleme
Hors ligne
Heu.. Tu a regarder mon code de départ ? Je l'ai déjà ce bout de code (a part la 2eme ligne qui sert a la canne a peche), mais le problème c'est que j'ai pas d'entité a mettre
Hors ligne
qui peut m'aider s'il vous pliat? quand je lance décompile.bat sa me met le chemin d'accès spécifié est introuvable appuyer sur une touche pour continuer ensuite j'appuie sur un touche et sa ferme décompile.bat help please
Hors ligne
Ben.. Petit screen s'impose. Tu a bien copier ton "bin" ?
Hors ligne
pourtant j'ai bien mi le dossier bin
http://imageshack.us/photo/my-images/560/sansrelo.jpg/
dsl pour la qualité si tu vois mal dis le moi je le referai
Hors ligne
Merci pour ce tuto :)
Hors ligne
salut j'ai réglé mon probleme mais j'en ai un autre la et ce serait bien que quelqu'un fasse une vidéo sur le modding merci au revoir
Hors ligne
toujours personnne pour une liste des fonction basique de minecraft??? helllpppp
Hors ligne
Désolé nibor je ne peux pas te répondre.
Mais qui peut résoudre mon probleme alors j'ai créé le jump bloc mais quand je vais dessus bah rien ne se passe meme quand je l'alimente a la redstone
Hors ligne
on poura pas te repondre si tu met pas ton code source
Hors ligne
Merci :)
Hors ligne
Super Tuto , mais je suis plutôt html , php , mais le java je devrais m'y mettre :P
sinon j'admire ton herborine et ta jump box
Bonne continuation
Hors ligne
Rejoins le côté obscure , on a des cookies :-D (rire démoniaque)
Salut à tous !!! Alors je suis nouveau sur ce forum et j'aurais une question en rapport avec ce sujet ^^
En effet ça fait quelques temps que j'essai de modder, et je suis donc venu sur ce tuto (le meilleur du genre d'après ce que j'ai vu) et je suis passé à la pratique ^^, j'ai eu pas mal de petits soucis classiques, mais là je butte a la deuxième étape pour recomplier, je reçoit ce message d'erreur:
Merci de m'aider dans la mesure du possible, car la je bloque complètement ^^
Hors ligne
Désolé je ne sais pas pourquoi mais l'image ne s'affiche pas...
Donc en gros il me dit: error: cannot find symbol public class mod_Jump extends Basemod {
symbol: class BaseMod
cannot find symbol ModLoader.SetInGameHook(this, true, false);
Et plusieurs autres autres erreurs ayant pour cause
symbol: variable ModLoader
Vu que j'ai le dernier mod loader je comprend vraiment pas et je suis largé ^^, à votre bon coeur...
Voici mon code si ça peux aider... mais je pense qu'il est correct, j'ai un souci avec le mod loader (enfin je suppose ^^)
package net.minecraft.src;
public class mod_Jump extends BaseMod {
public static Item Ressort;
public mod_Jump() {
ModLoader.SetInGameHook(this, true, false);
Ressort = (new ItemRessort(113)).setIconCoord(0, 0);
addRecipes(); //On ajoute les recettes
}
private void addRecipes() {
ModLoader.AddRecipe(new ItemStack(Ressort, 1), new Object[] {"C", Character.valueOf('C'), Block.cobblestone});
}
public String Version() {
//Ici j'ai l'habitude de mettre la version de Minecraft, mais (à vérifier) tu peu mettre la version de ton mod.
return "1.6.5";
}
}
Hors ligne
salut enfaite moi je suis entrain de créer un mob mais le probleme c'est que pendant recompile sa me mais sa :
== MCP v4.4 ==
> Recompiling client...
"C:\Program Files\Java\jdk1.7.0\bin\javac.exe" -g -source 1.6 -target 1.6 -class
path "lib/;lib/*;jars/bin/minecraft.jar;jars/bin/jinput.jar;jars/bin/lwjgl.jar;j
ars/bin/lwjgl_util.jar" -sourcepath src/minecraft -d bin/minecraft src/minecraft
\net\minecraft\client\*.java src/minecraft\net\minecraft\isom\*.java src/minecra
ft\net\minecraft\src\*.java conf/patches/*.java failed.
Return code : 1
== ERRORS FOUND ==
warning: [options] bootstrap class path not set in conjunction with -source 1.6
src\minecraft\net\minecraft\src\mod_omelettemob.java:18: error: no suitable meth
od found for AddSpawn(Class<Entityomelettemob>,int,EnumCreatureType)
ModLoader.AddSpawn(net.minecraft.src.Entityomelettemob.class, 8,EnumCreatureType
.creature);
^
method ModLoader.AddSpawn(String,int,int,int,EnumCreatureType,BiomeGenBase[]) is
not applicable
(actual and formal argument lists differ in length)
method ModLoader.AddSpawn(String,int,int,int,EnumCreatureType) is not applicable
(actual and formal argument lists differ in length)
method ModLoader.AddSpawn(Class,int,int,int,EnumCreatureType,BiomeGenBase[]) is
not applicable
(actual and formal argument lists differ in length)
method ModLoader.AddSpawn(Class,int,int,int,EnumCreatureType) is not applicable
(actual and formal argument lists differ in length)
1 error
1 warning
==================
> Done in 6.23 seconds
> Recompiling server...
!! Can not find server sources !!
Appuyez sur une touche pour continuer...
Hors ligne
Je ne réussi pas à créer des blocs: quand je test, le minecraft crash.
Quelqu'un aurait une solution ?
merci d'avance
Hors ligne