Résolu Item qui spawn sur un block tout les 60 ticks
-
Bonsoir,
J’aimerai faire apparaître un lingot de fer au dessus d’un block custom tout les 3 secondes donc 60 ticks !J’ai trouvé ce post sur le forum : https://www.minecraftforgefrance.fr/showthread.php?tid=434
Cependant il n’y a pas de solutions, en avez-vous une svp
voici mon code :
package com.mod.ciolmod.blocks; import java.util.Random; import com.mod.ciolmod.init.ItemMod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class BlockIronSpawner extends Block { public BlockIronSpawner(Material p_i45394_1_) { super(p_i45394_1_); this.setTickRandomly(true); } @Override public void updateTick(World world, int x, int y, int z, Random rand) { EntityItem itemir = new EntityItem(world, x, y + 3, z, new ItemStack(Items.iron_ingot, 1)); world.spawnEntityInWorld(itemir); } public int tickRate() { return 60; } }
-
yo, faut un TileEntity sur ton block et que tu override la fonction updateEntity() dans la class tu TileEntity puis que tu fasse 2 un variable qui se nomme timer
COMMENT CREER UN TILEENTITY SUR TON BLOCK ===> https://www.minecraftforgefrance.fr/showthread.php?tid=1113
fait ca avant de regarder le code ci-dessousif (timer < 60) { timer++; } if (timer == 60) { timer = 0; // Spawn ton EntityItem }
-
Ok je regarde ça et je te recontacte d’ici fin de semaine si j’ai un souci merci beaucoup ?
-
Merci, cependant je ne sais pas comment faire spawner un item de la tileentity
[size=smallif][size=small ]size=small
[size=small{]
[size=small timer ][size=small=][size=small ][size=small0][size=small;]
[size=small ][size=small// Spawn ton EntityItem]
[size=small}]voici la class de ma TE, il y a cependant une erreur quand je veux faire spawn l’item
package com.mod.ciolmod.blocks.tileentities; import java.util.Random; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class TileEntityISpawner extends TileEntity { @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); } //l'erreur est à la ligne updateEntity :( @Override public void updateEntity(World world, int x, int y, int z, Random rand) { int timer = 0; if (timer < 60) { timer++; } if (timer == 60) { timer = 0; EntityItem itemir = new EntityItem(world, x, y + 1, z, new ItemStack(Items.iron_ingot, 1)); world.spawnEntityInWorld(itemir); } } }
Merci beaucoup encore pour toute cette aide
J’espère un jour aider à mon tour comme vous le faîtes
-
x -> this.posX
idem pour y et z. -
Merci encore de ton aide !
C’est bon j’ai trouvé ceci
DimensionManager.getWorld(0)
par contre toujours aucun résultat aucun item spawn avez-vous une idée ?
Classe de mon Block
package com.mod.ciolmod.blocks; import java.util.Random; import com.mod.ciolmod.blocks.tileentities.TileEntityISpawner; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockIronSpawner extends Block { public BlockIronSpawner(Material p_i45394_1_) { super(p_i45394_1_); this.setTickRandomly(true); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityISpawner(); } @Override public boolean hasTileEntity(int metadata) { return true; } }
Class de ma TE
package com.mod.ciolmod.blocks.tileentities; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.DimensionManager; public class TileEntityISpawner extends TileEntity { private Entity field_98291_j; @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); } @Override public void updateEntity() { int timer = 0; if (timer < 60) { timer++; } if (timer == 60) { timer = 0; EntityItem itemir = new EntityItem(DimensionManager.getWorld(0), this.xCoord, this.yCoord + 1, this.zCoord, new ItemStack(Items.iron_ingot, 1)); this.worldObj.spawnEntityInWorld(itemir); } } // public Entity func_98281_h() { // if (this.field_98291_j == null) // { // Entity entity = new EntityItem(this.getWorldObj(), this.xCoord, this.yCoord + 2, this.zCoord, new ItemStack(Items.iron_ingot, 1))); // entity = this.getWorldObj().spawnEntityInWorld(entity); // this.field_98291_j = entity; // } // return this.field_98291_j; // } }
-
if (!this.worldObj.isRemote)
avant de faire spawn l’item afin de seulement executer le code server side only
et ta method updateentity est chelou normalement c’eset juste updateEntity sans arguments dans la fonction -
@‘SpyMan’:
if (!this.worldObj.isRemote)
avant de faire spawn l’item afin de seulement executer le code server side only
et ta method updateentity est chelou normalement c’eset juste updateEntity sans arguments dans la fonctionMerci beaucoup ça fonctionne !! Je te remercie 1000 fois