Posted August 5, 201312 yr Is there a way to make a random mob spawn with onItemUse? This is what i have so far, but not sure how to finish it. Item Class package com.azureusnation.mod.cards.unknown; import java.util.List; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import com.azureusnation.mod.Main; import com.azureusnation.mod.ModInfo; import com.azureusnation.mod.cards.main.CardDescriptions; import com.azureusnation.mod.cards.main.Name; import com.azureusnation.mod.cards.main.logic.RandomMob; import com.azureusnation.mod.cards.main.misc.Icon; import com.azureusnation.mod.cards.main.misc.Rarity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class UnknownMob extends Item { public UnknownMob(int id) { super(id); this.setUnlocalizedName(Name.unknownMob_unlocalizedName); this.setMaxStackSize(16); this.setCreativeTab(Main.unknownTab); } public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par3EntityPlayer, World par2World, int x, int y, int z, int side, float xOffset, float yOffset, float zOffSet) { if (!par2World.isRemote) { if (!par3EntityPlayer.capabilities.isCreativeMode) { --par1ItemStack.stackSize; } if (par2World.getBlockId(x, y, z) == 0 && (par2World.getBlockId(x, y, z) == Block.grass.blockID || par2World.getBlockId(x, y, z) == Block.stone.blockID || par2World.getBlockId(x, y, z) == Block.dirt.blockID || par2World.getBlockId(x, y, z) == Block.sand.blockID)) { EntitySkeleton ent = new EntitySkeleton(par2World); ent.setLocationAndAngles(x, y + 1, z, MathHelper.wrapAngleTo180_float(par2World.rand.nextFloat() * 360.0F), 0.0F); par2World.spawnEntityInWorld(ent); } par2World.playSoundAtEntity(par3EntityPlayer, ModInfo.ID.toLowerCase()+":card", 1.0F, 1.0F); } return true; } @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack par1ItemStack) { return true; } public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { par3List.add(Rarity.Unknown); par3List.add(CardDescriptions.UnknownHoe); } @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister icon) { itemIcon = icon.registerIcon(Icon.Unknown); } } Random Selector Class package com.azureusnation.mod.cards.main.logic; import java.util.Random; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.monster.EntityBlaze; import net.minecraft.entity.monster.EntityCaveSpider; import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.monster.EntityGhast; import net.minecraft.entity.monster.EntityGiantZombie; import net.minecraft.entity.monster.EntityGolem; import net.minecraft.entity.monster.EntityIronGolem; import net.minecraft.entity.monster.EntityMagmaCube; import net.minecraft.entity.monster.EntityPigZombie; import net.minecraft.entity.monster.EntitySilverfish; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.monster.EntitySlime; import net.minecraft.entity.monster.EntitySnowman; import net.minecraft.entity.monster.EntitySpider; import net.minecraft.entity.monster.EntityWitch; public class RandomMob { private static Random random = new Random(); private static final EntityLiving EntityBlaze = new EntityBlaze(null); private static final EntityLiving EntityCaveSpider = new EntityCaveSpider(null); private static final EntityLiving EntityCreeper = new EntityCreeper(null); private static final EntityLiving EntityEnderman = new EntityEnderman(null); private static final EntityLiving EntityGhast = new EntityGhast(null); private static final EntityLiving EntityGiantZombie = new EntityGiantZombie(null); private static final EntityLiving EntityIronGolem = new EntityIronGolem(null); private static final EntityLiving EntityMagmaCube = new EntityMagmaCube(null); private static final EntityLiving EntityPigZombie = new EntityPigZombie(null); private static final EntityLiving EntitySilverfish = new EntitySilverfish(null); private static final EntityLiving EntitySkeleton = new EntitySkeleton(null); private static final EntityLiving EntitySlime = new EntitySlime(null); private static final EntityLiving EntitySnowman = new EntitySnowman(null); private static final EntityLiving EntitySpider = new EntitySpider(null); private static final EntityLiving EntityWitch = new EntityWitch(null); private static EntityLiving Mob [] = { EntityBlaze, EntityCaveSpider, EntityCreeper, EntityEnderman, EntityGhast, EntityGiantZombie, EntityIronGolem, EntityMagmaCube, EntityPigZombie, EntitySilverfish, EntitySkeleton, EntitySlime, EntitySnowman, EntitySpider, EntityWitch, }; public static void Mob() { } }
August 5, 201312 yr Without actually reading threw your code it should be as simple as making a list, shuffling the list, and then pulling out a random item from the list. You'll want to store either new Entity instances or classes in the list. Then do the rest after getting a valid Entity from the list. http://i577.photobucket.com/albums/ss215/bobstrong/ModBannerMed.png[/img]
August 5, 201312 yr Replying with the code I gave you on IRC so people seeing this topic in the future can see /** * Item Author: Katrina S * nekosune **/ package com.nekokittygames.modjam.UnDeath; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityEggInfo; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Facing; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class TestItem extends Item { public TestItem(int par1) { super(par1); setMaxStackSize(64); setCreativeTab(CreativeTabs.tabMisc); setUnlocalizedName("testSpawner"); func_111206_d("undeath:DebugItem"); } public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par3EntityPlayer, World par2World, int x, int y, int z, int side, float xOffset, float yOffset, float zOffSet) { if (!par2World.isRemote) { int i1 = par2World.getBlockId(x, y, z); x += Facing.offsetsXForSide[side]; y += Facing.offsetsYForSide[side]; z += Facing.offsetsZForSide[side]; double d0 = 0.0D; if (side == 1 && Block.blocksList[i1] != null && Block.blocksList[i1].getRenderType() == 11) { d0 = 0.5D; } Iterator iterator = EntityList.entityEggs.values().iterator(); List<Integer> ids=new ArrayList<Integer>(); while (iterator.hasNext()) { EntityEggInfo entityegginfo = (EntityEggInfo)iterator.next(); ids.add(entityegginfo.spawnedID); } // shuffle and pick from ids Collections.shuffle(ids); int id=ids.get(0); Entity entity = null; entity = EntityList.createEntityByID(id,par2World); if (entity != null && entity instanceof EntityLivingBase) { EntityLiving entityliving = (EntityLiving)entity; entity.setLocationAndAngles(x+0.5d, y+0.5d, z+0.5d, MathHelper.wrapAngleTo180_float(par2World.rand.nextFloat() * 360.0F), 0.0F); entityliving.rotationYawHead = entityliving.rotationYaw; entityliving.renderYawOffset = entityliving.rotationYaw; entityliving.func_110161_a((EntityLivingData)null); par2World.spawnEntityInWorld(entity); entityliving.playLivingSound(); } } return true; } }
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.