Block qui drop des items tout les x ticks
-
Bonjour à tous !
Je cherche à créer un **block **qui drop des items au sol au bout d’un intervalle de temps,
Mais je ne sais pas comment faire pour qu’un block drop des items …
Si quelqu’un a une idée je suis intéressé !!Merci
Sigma
-
Salut,
Il faut faire spawner une EntityItem contenant l’item stack voulu dans le monde.
Pour faire un action tous les x temps dans un bloc tu peux utiliser la fonction updateTick, le temps de tick se défini avec la fonction tickRate. Il faut ajouter un this.setRandomTick(true); dans le constructeur pour que cela fonctionne. -
@‘robin4002’:
Salut,
Il faut faire spawner une EntityItem contenant l’item stack voulu dans le monde.
Pour faire un action tous les x temps dans un bloc tu peux utiliser la fonction updateTick, le temps de tick se défini avec la fonction tickRate. Il faut ajouter un this.setRandomTick(true); dans le constructeur pour que cela fonctionne.Merci beaucoup !
J’ai fais ça :public void updateTick(World world, int x, int y, int z) { EntityItem item = new EntityItem(world, x, y, z, new ItemStack(ItemMod.limber, 1)); } public int tickRate() { return 10; }
Mais ça ne marche pas quelqu’un peut m’expliquer la connerie que j’ai faite et que j’ai pas vu …
Merci ^^
-
Le problème c’est que ton code est incomplet, tu ne spawn jamais l’entité item. De plus la fonction updateTick a en argument en plus Random que tu n’as pas mis. Tu peux utiliser l’annotation @Override pour t’assurer qu’une fonction existe dans la classe mère.
Il faut ajouter dans updateTick :
world.spawnEntityInWorld(item);Par contre si l’entité spawn sur le world client tu vas avoir une entité fantôme impossible à ramasser. Donc il faudrait plutôt faire comme ça :
@Override public void updateTick(World world, int x, int y, int z, Random rand) { if(!world.isRemote) { EntityItem item = new EntityItem(world, x, y, z, new ItemStack(ItemMod.limber, 1)); world.spawnEntityInWorld(item); } }
N’oublies pas d’ajouter setTickRandomly(true); dans le constructeur du bloc.
-
@‘robin4002’:
Le problème c’est que ton code est incomplet, tu ne spawn jamais l’entité item. De plus la fonction updateTick a en argument en plus Random que tu n’as pas mis. Tu peux utiliser l’annotation @Override pour t’assurer qu’une fonction existe dans la classe mère.
Il faut ajouter dans updateTick :
world.spawnEntityInWorld(item);Par contre si l’entité spawn sur le world client tu vas avoir une entité fantôme impossible à ramasser. Donc il faudrait plutôt faire comme ça :
@Override public void updateTick(World world, int x, int y, int z, Random rand) { if(!world.isRemote) { EntityItem item = new EntityItem(world, x, y, z, new ItemStack(ItemMod.limber, 1)); world.spawnEntityInWorld(item); } }
N’oublies pas d’ajouter setTickRandomly(true); dans le constructeur du bloc.
Ça ne marche toujours pas
-
Envoies le code complet de ta classe.