perromercenary00 Posted April 25, 2016 Share Posted April 25, 2016 good nights im triying to get to work thevainilla spawner in mi custom extructurebut dongent how to load it whith an entity and an entity whith an armour and weapons soo for now i made an item thath use entity raytrace to create the block spawner but always is pigs spawner // ############################################################################################3 /** * Called when the player stops using an Item (stops holding the right mouse * button). */ @Override public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBase player, int timeLeft) { int conteo = 10000 - timeLeft; if (!worldIn.isRemote) { EntityPlayer playerIn = (EntityPlayer) player; ObjetoObjetivo oo = new ObjetoObjetivo(worldIn, player, 20, 1); if (oo.getHayBloque()) { RayTraceResult rt = oo.getRaytraceresult(); Vec3d ht = rt.hitVec; worldIn.spawnEntityInWorld( new EntityItem(worldIn, ht.xCoord, ht.yCoord, ht.zCoord , new ItemStack(MMAF.bala9mm, 14, 1) ) ); IBlockState mob = Blocks.mob_spawner.getDefaultState(); worldIn.setBlockState(rt.getBlockPos(), mob); } } } // #########################################################################3 //##########################333 sooo how do i load the spaawner whith an diferent entity amd how do i set custom inventory dor this entity thans for reading Quote Link to comment Share on other sites More sharing options...
JaredBGreat Posted April 25, 2016 Share Posted April 25, 2016 To add a mob you need to create the spawner TileEntity and put the name of the mob in it: I use this method: public static void placeSpawner(World world, int x, int y, int z, String mob) { BlockPos pos = new BlockPos(x, y, z); if(isProtectedBlock(world, x, y, z)) return; placeBlock(world, x, y, z, spawner); TileEntityMobSpawner theSpawner = (TileEntityMobSpawner)world.getTileEntity(pos); MobSpawnerBaseLogic logic = theSpawner.getSpawnerBaseLogic(); logic.setEntityName(mob); } I'm not sure about adding gear -- I've never tried -- so I don't know if the vanilla strings used in command blocks work, though I'm sure there are other methods that catch the spawn event and edit the mob. The name is just the official minecraft name (though mod id is usually needed for modded mobs, if the modder named them correctly, but no mod id for vanilla mob). Note, if the name is wrong the game will run fine but the spawner will be empty and spawn nothing. Quote Developer of Doomlike Dungeons. Link to comment Share on other sites More sharing options...
perromercenary00 Posted April 25, 2016 Author Share Posted April 25, 2016 its like they have not set all the options for the spawner this make it harder to get probabuly i gonna end making a custom spawner and dont wanna do thath anyway where i could get the name list for all entityes i been strgin trying to get a simple zombie IBlockState mob = Blocks.mob_spawner.getDefaultState(); worldIn.setBlockState(rt.getBlockPos(), mob); TileEntityMobSpawner theSpawner = (TileEntityMobSpawner)worldIn.getTileEntity(rt.getBlockPos()); MobSpawnerBaseLogic logic = theSpawner.getSpawnerBaseLogic(); //EntityZombie ez = new EntityZombie(worldIn); //ez.setHeldItem(EnumHand.OFF_HAND, new ItemStack( MMAF.pistola9mm_MP5T5, 1, 3) ); //logic.func_98267_a(ez.getEntityId()); //WeightedSpawnerEntity p = new WeightedSpawnerEntity( ez.getEntityData() ); //logic.func_184993_a(p); logic.setEntityName("zombie"); Quote Link to comment Share on other sites More sharing options...
JaredBGreat Posted April 25, 2016 Share Posted April 25, 2016 The vanilla mobs are basically just the capitalized English names without spaces (though a few could through you off): Bat Blaze CaveSpider Chicken Cow Creeper EnderDragon Enderman Endermite EntityHorse Ghast Giant Guardian LavaSlime MushroomCow Ozelot Pig PigZombie Rabbit Sheep Shulker Silverfish Skeleton Slime SnowMan Spider Squid Villager VillagerGolem Witch WitherBoss Wolf Zombie Doomlike Dungeons and Just Another Spawner can both output names for you. If you'd like do this yourself, you can get the list from the class "net.minecraft.entity.EntityList" EDIT: Its case sensitive, try "Zombie" instead of "zombie" and it should work. Quote Developer of Doomlike Dungeons. Link to comment Share on other sites More sharing options...
Earthcomputer Posted April 25, 2016 Share Posted April 25, 2016 In addition to the comments above, you should always do an instanceof check before casting after world.getTileEntity. You cannot guarantee that this tile entity is an instance of TileEntityMobSpawner, and if it isn't, the game will crash. Quote catch(Exception e) { } Yay, Pokémon exception handling, gotta catch 'em all (and then do nothing with 'em). Link to comment Share on other sites More sharing options...
perromercenary00 Posted April 25, 2016 Author Share Posted April 25, 2016 yea wass the upercase letter the trouble whith names, the code looks like you can set a custom nbtvalues set but until now what i try hasn work MobSpawnerBaseLogic logic = theSpawner.getSpawnerBaseLogic(); EntityZombie ez = new EntityZombie(worldIn); ez.setHeldItem(EnumHand.OFF_HAND, new ItemStack( MMAF.pistola9mm_MP5T5, 1, 3) ); //logic.func_98267_a(ez.getEntityId()); WeightedSpawnerEntity p = new WeightedSpawnerEntity( ez.getEntityData() ); logic.func_184993_a(p); logic.setEntityName("Zombie"); actually i think is more conveniet to create a custom spawnner i have someting in mind i need to test first Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.